【问题标题】:Why doesn't "x=5 echo ${x}" output anything? [duplicate]为什么“x=5 echo ${x}”不输出任何东西? [复制]
【发布时间】: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 sh


    【解决方案1】:

    当您没有分隔符时,您将 x 设置为 环境 变量,而 echo 运行(仅在该单个命令的持续时间内),没有 在命令启动之前定义一个用于评估扩展的 shell 变量(这就是 x=5; echo "$x" 案例中发生的情况)。

    但是,echo 不会根据定义的环境变量更改其输出(有时非常具体的环境变量旨在修改其行为 - POSIXLY_CORRECT 等),因此这没有明显的效果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-11
      • 1970-01-01
      • 2020-09-07
      • 2018-06-24
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多