如何将Bash命令的输出分配给变量?

这个问题在这里已经有了答案:

  • 如何将变量设置为Bash中命令的输出? 13个答案

  • 尝试:

    pwd=`pwd`
    

    要么

    pwd=$(pwd)
    

    在等号后注意不要有空格。

    正如魏斯先生指出的那样; 你不分配给$pwd ,你分配给pwd


    在shell中,您分配给一个没有美元符号的变量:

    TEST=`pwd`
    echo $TEST
    

    这更好(并且可以嵌套),但不如后台便携式:

    TEST=$(pwd)
    echo $TEST
    

    永远记住:只有在读取变量时才使用美元符号。


    在这种特殊情况下,请注意bash有一个名为PWD的变量,其中包含当前目录: $PWD等同于`pwd` 。 (所以其他shell,这是一个标准功能。)所以你可以写下你的脚本:

    #!/bin/bash
    until [ "$PWD" = "/" ]; do
      echo "$PWD"
      ls && cd .. && ls 
    done
    

    请注意在变量引用周围使用双引号。 如果变量(这里是当前目录)包含空格或通配符( [?* )),那么它们是必需的,因为shell将变量扩展的结果拆分为单词并对这些单词执行匹配。 总是双引号变量扩展"$foo"和命令替换"$(foo)" (除非你明确知道你不需要)。

    在一般情况下,正如其他答案已经提到的那样:

  • 您不能在分配中在等号周围使用空格: var=value ,而不是var = value
  • $表示“取这个变量的值”,所以在赋值时不要使用它: var=value ,而不是$var=value
  • 链接地址: http://www.djcxy.com/p/57195.html

    上一篇: How to assign the output of a Bash command to a variable?

    下一篇: Cron doesn't run bash script