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)
我缺少什么?
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
稍后运行时,变量已经被分配了值。