if语句中的命令与返回值检查之间的区别

时间:2013-03-14 17:34:41

标签: bash return-value if-statement

所以我不知道这个标题有多聪明,但我只是在想它是否“推荐”使用第二种方法?:

第一种方法:

if mv "$(ls -1 tarball* | head -1)" supertarball.tar; then
  echo "A Super Tarball created."
else
  echo "No tarballs here."
fi

第二个(也将ls字符串分配给变量):

LAST="$(ls -1 tarball* | head -1)"
mv $LAST supertarball.tar
res=$?
if [ $res -ne 0 ]; then
  echo "A Super Tarball created."
else
  echo "No tarballs here."
fi

1 个答案:

答案 0 :(得分:3)

他们都很糟糕,但要回答基本问题,请使用if。这就是它的用途。只有在需要按多种可能的非零状态分支时才需要检查$?

在您正在阅读时,don't parse lsalways quote

f() {
    if [ -f "$1" ] && mv -- "$1" supertarball.tar; then
        echo 'A Super Tarball created.'
    else
        echo 'No tarballs here.'
    fi >&2
}

f tarball*