我有一个名为“ teleport.sh”的shell脚本,如下所示:
if [ $1="1" ];
then
shift
mv "$@" ~/lab/Sun
elif [ $1="2" ];
then
shift
mv "$@" ~/lab/Moon
elif [ $1="3" ];
then
shift
mv "$@" ~/lab/Earth
fi
当我执行时:
sh teleport.sh 2 testfile
这testfile
被移到了~/lab/Sun
目录,这让我很困惑,因为我没有将1或1传递给该脚本。
怎么了
$(cmd)
是命令替换,(大多数情况下)与相同`cmd`
。参见mywiki.wooledge.org/CommandSubstitution和mywiki.wooledge.org/BashFAQ/082
$var
,,$(cmd)
甚至`cmd`
[$(cmd)
应该首选])。还有一些边缘情况下,你不会有报价,但总是这样做不会伤害。