0

だから私はそのタイトルがどれほど賢かったのかわからないが、私はちょうど2番目のアプローチを使用することがどういうわけか「推奨」されているのだろうかと思っていた。

最初のアプローチ:

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

2番目のもの(文字列も変数に割り当て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 に答える