关于shell:如何将bash命令的输出分配给变量?

How to assign the output of a Bash command to a variable?

本问题已经有最佳答案,请猛点这里访问。

我在将pwd命令的内容放入shell变量时遇到问题,稍后将使用该变量。

这是我的shell代码(循环不会停止):

1
2
3
4
5
6
7
8
#!/bin/bash
pwd= `pwd`
until [ $pwd ="/" ]
    do
        echo $pwd
        ls && cd .. && ls
        $pwd= `pwd`
    done

你能找出我的错误吗?


试试:

1
pwd=`pwd`

1
pwd=$(pwd)

NO在空间注意equals的迹象。

也为威斯先生点了;你不assign两$pwd,你assign两pwd


在你assign壳两个变量没有美元符号:

1
2
TEST=`pwd`
echo $TEST

好的,更好的和可以被嵌套的)但冰槽的backtics AA AA式:

1
2
TEST=$(pwd)
echo $TEST

永远记住:《美元符号用冰只有当阅读一变。


在这个特殊的病例,注意,有一个叫bash变量pwd,包含的目录:$pwd冰流的两个`pwd`当量。(其他类的死亡,这是一个标准的特征。)所以你可以这样写:你的脚本

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

使用双注quotes在《变的证明人。如果有必要的话,他们都是可变的(这里的"当前目录)包含空白字符或通配符(\[?*壳),因为分裂的结果expansions词变为performs通配符和对这些话。双变量总是quote expansions "$foo"和命令的替代"$(foo)"(除非你知道你没有专门的两个)。

在一般情况下,如有其他答案:上述。

  • 你不能使用空格,在"平等的分配:在一个var=value槽>,< < / var = value罢工罢工。
  • $均值"把你的价值是可变的,至少我不使用它的时候assigning:var=value槽>,< < / $var=value罢工,罢工。

你可以做的方式也更复杂的commands,完全是两个以上的实例,全面收购。所以,我说我想要的号码在系统的运行过程和它的大_美元{ }变量num的过程。

所有你想要的。冰Generate命令管道科技的东西它的输出(过程变量count)成的。

它看起来这样的东西:

1
NUM_PROCS=$(ps -e | sed 1d | wc -l)

在希望helps添加一些有用的信息,这两个讨论。


这里的你的脚本。

1
2
3
4
5
6
7
DIR=$(pwd)
echo $DIR
while ["$DIR" !="/" ]; do
    cd ..
    DIR=$(pwd)
    echo $DIR
done

注的空间,使用quotes和美元符号。