如何将Bash命令的输出分配给变量?
这个问题在这里已经有了答案:
尝试:
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
。 上一篇: How to assign the output of a Bash command to a variable?