内联bash脚本变量

时间:2012-04-01 00:56:43

标签: bash

不可否认,我是一名新手。我总是希望为我的shell脚本目的而使用Python。但是,我正试图让自己学习一些bash。我很好奇为什么以下代码不起作用。

sh -c "F=\"123\"; echo $F"

2 个答案:

答案 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" )

语法更好,没有转义字符等