我想从一个bash shell脚本运行一个命令,该脚本在单引号和变量中有单引号和一些其他命令.
例如 repo forall -c '....$variable'
在此格式中,$进行转义并且不扩展变量.
我尝试了以下变化,但他们被拒绝了:
repo forall -c '...."$variable" '
repo forall -c " '....$variable' "
" repo forall -c '....$variable' "
repo forall -c "'" ....$variable "'"
Run Code Online (Sandbox Code Playgroud)
如果我用值代替变量来执行命令就好了.
请告诉我哪里出错了.
我正在使用git,然后将提交消息和其他位作为JSON有效负载发布到服务器.
目前我有:
MSG=`git log -n 1 --format=oneline | grep -o ' .\+'`
Run Code Online (Sandbox Code Playgroud)
它将MSG设置为:
Calendar can't go back past today
Run Code Online (Sandbox Code Playgroud)
然后
curl -i -X POST \
-H 'Accept: application/text' \
-H 'Content-type: application/json' \
-d "{'payload': {'message': '$MSG'}}" \
'https://example.com'
Run Code Online (Sandbox Code Playgroud)
我真正的JSON有另外两个领域.
这样可以正常工作,但是当我有一个提交消息(例如上面带有撇号的提交消息)时,JSON无效.
如何逃脱bash所需的角色?我不熟悉这种语言,所以不知道从哪里开始.更换'有\'会做的最小,我怀疑这份工作.