【问题标题】:Weird output in BASH shell [duplicate]BASH shell中的奇怪输出[重复]
【发布时间】:2017-05-15 05:43:14
【问题描述】:

在 UNIX 终端中,当我编写以下命令时:

$ a=b

$ c=a

$ echo $$c

我希望输出是 b,因为 c 的值是 a,a 的值是 b。

但是,我收到的输出却是:2861c。

谁能告诉我这个输出背后的原因?

【问题讨论】:

    标签: bash scripting output echo


    【解决方案1】:

    echo $$c 打印您的终端 PID 和后面的字母“c”。您可以通过 'ps aux | 进行验证。 grep bash'。

    【讨论】:

      【解决方案2】:

      来自http://www.tldp.org/LDP/abs/html/internalvariables.html

      $$ 给出当前运行的 shell 实例的 PID。

      bash4$ 回声 $$ 11015

      bash4$ echo $BASHPID 11015

      第一个 $ 符号捕获下一个字符并打印该值。

      对于您的情况,双重替换是最好的选择。

      echo ${!c}

      或者你可以选择

      eval echo \$$c

      【讨论】:

        【解决方案3】:

        $$ 是 BASH 的特殊变量,用于打印当前脚本执行的进程 ID。所以$$c 打印进程 id 后跟 c 字母

        如果你还想存档对变量的间接引用,

        a=b                                                                             
        c=a                                                                             
        echo ${!c} #will print "b" on console
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-12-29
          • 2012-01-23
          • 1970-01-01
          • 1970-01-01
          • 2012-10-20
          • 2018-06-15
          • 1970-01-01
          • 2017-02-18
          相关资源
          最近更新 更多