【发布时间】:2019-04-28 16:26:30
【问题描述】:
我目前正在尝试熟悉 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
【问题讨论】:
我目前正在尝试熟悉 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
【问题讨论】:
当您没有分隔符时,您将 x 设置为 环境 变量,而 echo 运行(仅在该单个命令的持续时间内),没有 在命令启动之前定义一个用于评估扩展的 shell 变量(这就是 x=5; echo "$x" 案例中发生的情况)。
但是,echo 不会根据定义的环境变量更改其输出(有时非常具体的环境变量旨在修改其行为 - POSIXLY_CORRECT 等),因此这没有明显的效果。
【讨论】: