命令变电站在 curl 内不起作用

Command substation does not work inside a curl

我正在使用以下 curl 命令来 post 以下 json 数据。

curl -d 'json_data={"operation":"core/update","comment":"Synchronization from blah...","class":"Incident","key":{"ref":"I-000060"},"fields":{"public_log":"$(pwd)"}}' 'http://172.27.220.46/itop/webservices/rest.php?version=1.1&auth_user=admin1123&auth_pwd=xxxxx' 

我正在使用 $(pwd) 形式的命令替换,但是无法识别,并且 curl post 以显式形式 $(pwd) 而不是 "root" .

我做错了什么?

这是因为整个 JSON 字符串被单引号 ' 包围,它停止 Bash 展开任何内容:

  ~/temp> export MY_VAR=Hello
  ~/temp>
  ~/temp> echo "$MY_VAR"
  Hello
  ~/temp> echo '$MY_VAR'
  $MY_VAR

您必须将单引号替换为双引号并转义其他双引号:

 curl -d "json_data={\"operation\":...

参考: