我有一个名为“ 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)应该首选])。还有一些边缘情况下,你不会有报价,但总是这样做不会伤害。