由于$DESCRIPTION可以是多个单词,所以必须用双引号括起来,因此:
curl -u "$USER:$PASS" --request POST \
--data '{"title": "'$BRANCH_NAME'", "body": "'"$DESCRIPTION"'", \
"head": "'$OWNER':'$BRANCH_NAME'", "base": "develop"}' \
https://api.github.com/repos/$OWNER/$REPO_NAME/pulls
这是一个不明显的小事,但是该"'"$DESCRIPTION"'"部分在 ; 的单引号值内有一个双引号--data。然后单引号被终止(暂时),然后有双引号"$DESCRIPTION",然后是一个新的单引号部分的开始,里面的第一个字符是双引号。
为了保持一致性和面向未来,您还应该类似地围绕其他变量:
curl -u "$USER:$PASS" --request POST \
--data '{"title": "'"$BRANCH_NAME"'", "body": "'"$DESCRIPTION"'", \
"head": "'"$OWNER"':'"$BRANCH_NAME"'", "base": "develop"}' \
https://api.github.com/repos/$OWNER/$REPO_NAME/pulls
尽量避免在所有 shell 变量值中同时使用单引号和双引号;如果您不得不担心这样的报价,您将做噩梦。