在Bash中,为什么`x = 100 echo $ x`没有打印任何东西?

时间:2015-04-07 03:04:33

标签: linux bash shell variables scope

我看到这样的代码:

fqdn='computer1.daveeddy.com'

IFS=. read hostname domain tld <<< "$fqdn"
echo "$hostname is in $domain.$tld"
# => "computer1 is in daveeddy.com"

我认为它有效,因为IFS已分配给第三行的.。所以我尝试了这个:

x=100  echo $x

但发现bash没有打印任何内容,而我预计会打印100 ..

此外,我发现x=100 echo $x; echo $x没有打印任何内容,x=100; echo $x打印100,这非常令人困惑。

有没有人有这方面的想法?

2 个答案:

答案 0 :(得分:5)

{<1}}在 $x运行之前展开,结果作为参数传递给echoecho在其环境中不使用echo的值。

在第一个示例中,x在其环境中使用read的值来拆分它通过here字符串接收的字符串。

答案 1 :(得分:-1)

这是考虑它的另一种方式:

$ a="echo 100" $a
$ a="echo 100"
$ $a
100