如何使用内部附加命令执行 Curl 命令?

如何使用内部附加命令执行 Curl 命令?

我想运行以下命令:

curl -X PUT $URL -H "accept: */*" -H "Content-Type: application/json" -d '{"payload": $(base64 /some/path)`}'

我在 ESLinux 环境 (tcsh) 中运行该命令时遇到问题,因为它无法执行$(base64 /some/path).得到Illegal variable name这个是有道理的,因为使用这种语法的是 bash 而不是 tcsh。我怎样才能执行它?尝试使用反引号但没有成功。

答案1

反引号应该有效。请注意,您需要更多双引号字符才能使 json 语法正确

curl -X PUT $URL -H "accept: */*" -H "Content-Type: application/json" -d '{"payload": "'`base64 /some/path`'"}'

-d参数由3部分组成

   '{"payload": "'
   `base64 /some/path`
   '"}'

第一个和第三个使用单引号,因此其中的所有内容都会被保留,包括双引号。特别是 -d 参数的最终值将类似于{ "payload": "af5143676d6d6d6a bcdefc8844"}十六进制字符串周围带有双引号,并且嵌入的空格替换了 base64 输出中的换行符。远端可能不喜欢这些空格。

相关内容