Bash:将变量插入curl调用不起作用

乔什·贝克威斯(Josh Beckwith)

我有一个非常简单的bash脚本,其中包含三个命令。

第一个命令剥离最后一个git commit的第一个单词,第二个命令尝试以POST相同的变量作为调用的一部分来调用api端点,第三个命令只是打印该变量,以确保它是好好工作。见下面的代码

SOMETHING=$(git log -1 --pretty=%B | head -n1 | sed -e 's/\s.*$//' | cut -d ' ' -f1)
curl -X POST \
  http://www.someurl.com/ \
  -H 'Cache-Control: no-cache' \
  -d '{"item":"$SOMETHING"}'
echo "variable was $SOMETHING"

当我运行该bash脚本时,我从服务获得响应,说XML中的“项目设置不正确”,但是它确实正确地呼应了正确的变量。所以我知道第一行正在工作。如果我复制该curl命令并将其粘贴到bash中,并用实际值替换$ SOMETHING,它将正常工作。

安德烈(Andrey Tyukin)

单引号不会扩展其$variables内部。尝试

'{"item":"'"$SOMETHING"'"}'

代替。简要说明:

  • '{"item":"' 是由单引号分隔的字符串,其中包含双引号
  • "$SOMETHING" 是由双引号分隔的字符串,它扩展了变量 $SOMETHING
  • '"}'还是一个-''分隔的字符串,其中包含双引号
  • 简单地将这些字符串连续写成无间隙就是字符串连接

这样,您可以进行变量扩展,但不必插入任何反斜杠即可转义双引号。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章