我有一个问题,把pwd命令的内容放入一个shell变量,我将稍后使用。
下面是我的shell代码(循环不会停止):
#!/bin/bash
pwd= `pwd`
until [ $pwd = "/" ]
do
echo $pwd
ls && cd .. && ls
$pwd= `pwd`
done
你能指出我的错误吗?
我有一个问题,把pwd命令的内容放入一个shell变量,我将稍后使用。
下面是我的shell代码(循环不会停止):
#!/bin/bash
pwd= `pwd`
until [ $pwd = "/" ]
do
echo $pwd
ls && cd .. && ls
$pwd= `pwd`
done
你能指出我的错误吗?
当前回答
您还可以执行更复杂的命令,只是为了完善上面的示例。因此,假设我想获取系统上运行的进程数,并将其存储在${NUM_PROCS}变量中。
您所要做的就是生成命令管道,并将其输出(进程计数)填充到变量中。
它看起来是这样的:
NUM_PROCS=$(ps -e | sed 1d | wc -l)
我希望这有助于为这个讨论添加一些有用的信息。
其他回答
这是你的剧本……
DIR=$(pwd)
echo $DIR
while [ "$DIR" != "/" ]; do
cd ..
DIR=$(pwd)
echo $DIR
done
注意空格、引号和$符号的使用。
在shell中,你赋值给一个不带$符号的变量:
TEST=`pwd`
echo $TEST
这更好(并且可以嵌套),但不像backtics那样可移植:
TEST=$(pwd)
echo $TEST
永远记住:$符号只在读取变量时使用。
您还可以执行更复杂的命令,只是为了完善上面的示例。因此,假设我想获取系统上运行的进程数,并将其存储在${NUM_PROCS}变量中。
您所要做的就是生成命令管道,并将其输出(进程计数)填充到变量中。
它看起来是这样的:
NUM_PROCS=$(ps -e | sed 1d | wc -l)
我希望这有助于为这个讨论添加一些有用的信息。
在这个特定的例子中,请注意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。
Try:
pwd=`pwd`
or
pwd=$(pwd)
注意等号后面没有空格。
Weiss先生还指出;不是赋值给$pwd,而是赋值给pwd。