0

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

第一种方法:

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
4

1 回答 1

3

它们都很糟糕,但要回答基本问题,请使用if. 这就是它的用途。$?仅当您需要按多个可能的非零状态进行分支时才需要检查。

当你阅读时,不要解析 ls,并且总是引用

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

f tarball*
于 2013-03-14T17:51:51.023 回答