我目前正在尝试使自己熟悉Shell行和命令执行。
有人可以向我解释以下行为吗?为什么在命令前有分隔符的情况下,shell仅注册一个赋值变量?不能在同一命令中进行分配吗?
sh-3.2$ x=5 echo ${x}
sh-3.2$ x=5; echo ${x}
5
sh-3.2$ x=5 && echo ${x}
5
答案 0 :(得分:0)
如果没有分隔符,则将x
运行时(仅在单个命令期间)将echo
设置为 environment 变量, 不定义一个shell变量,用于在命令启动之前评估扩展(在x=5; echo "$x"
情况下就是这种情况)。
但是,echo
不会根据定义的环境变量来更改其输出(除了有时非常具体的环境变量意在修改其行为-POSIXLY_CORRECT
等),因此没有可见效果。