我有一个非常简单的bash脚本,有三个命令。
第一个命令剥离最后一个git commit的第一个字,第二个命令尝试对api端点进行POST
调用,同一个变量作为调用的一部分,第三个命令只是打印该变量,以确保它正常工作。请参阅以下代码
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替换为实际值,则可以正常工作。
答案 0 :(得分:2)
单引号不会扩展其中的$variables
。
尝试
'{"item":"'"$SOMETHING"'"}'
代替。简要说明:
'{"item":"'
是由包含双引号的单引号分隔的字符串"$SOMETHING"
是由双引号分隔的字符串,用于扩展变量$SOMETHING
'"}'
又是''
- 分隔字符串,包含双引号通过这种方式,您可以获得变量扩展,但不必插入任何反斜杠来转义双引号。