重击:'echo'不输出在同一行上定义的变量

时间:2018-07-09 08:28:20

标签: bash variables

echo调用输出变量:

$ FOO="bar" eval 'echo foo: "$FOO"'
foo: bar

但这不是:

$ FOO="bar" echo foo: "$FOO"
foo:

那是为什么?我很确定我的单引号和双引号正确。

在环境方面,我使用的是iTerm2的MacBook Pro,当前版本为bash

$ echo $BASH_VERSION
4.4.23(1)-release

1 个答案:

答案 0 :(得分:-2)

之所以会这样,是因为在您的第二个示例中,$FOO在展开该行之前被展开。

编辑:如果第二部分在单独的脚本中,则此方法有效:

$ cat foo.sh
echo foo: "$FOO"

$ FOO="bar" ./foo.sh
foo: bar

或者:

FOO="bar" bash -c 'echo $FOO'

使用单引号引起该命令意味着该命令不会首先被外壳扩展。