不可否认,我是一名新手。我总是希望为我的shell脚本目的而使用Python。但是,我正试图让自己学习一些bash。我很好奇为什么以下代码不起作用。
sh -c "F=\"123\"; echo $F"
答案 0 :(得分:15)
它不起作用,因为双引号字符串中的变量扩展在调用命令之前发生。也就是说,如果我输入:
echo "$HOME"
shell将其转换为:
echo "/home/lars"
在实际调用echo命令之前。同样,如果您输入:
sh -c "F=\"123\"; echo $F"
这变成了:
sh -c "F=\"123\"; echo"
在调用sh
命令之前。您可以使用单引号来禁止变量扩展,例如:
sh -c 'F="123"; echo $F'
您也可以使用反斜杠转义$
:
sh -c "F=\"123\"; echo \$F"
答案 1 :(得分:0)
不是核心问题的答案,但如果有人希望以比 bash -c
更优雅的(主观上)方式进行内联:
( export MY_FLAG="Hello"; echo "$MY_FLAG" )
语法更好,没有转义字符等