在 bash 中回显环境变量

Sim*_*ski 7 bash environment-variables

我不明白为什么这不起作用:

TEXT="blah" echo $TEXT    #echoes nothing
Run Code Online (Sandbox Code Playgroud)

我想这可能是因为 echo 是内置的,所以我尝试了这个:

TEXT="blah" `which echo` $TEXT    #still nothing
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

cho*_*oba 7

shell在运行命令之前甚至在运行赋值之前都会扩展变量。

比照。

text=blah ; echo $text
Run Code Online (Sandbox Code Playgroud)

或者

text=blah eval 'echo $text'
Run Code Online (Sandbox Code Playgroud)

第一个有效,因为分配是作为单独的命令运行的。第二个之所以有效,是因为$text它是单引号的,这会在 shell 处理命令时防止其扩展;当eval稍后运行时,变量已经被分配了值。