13

そのため、bashは例外を処理しないことがわかりました(try / catchはありません)。私のスクリプトでは、コマンドが成功したかどうかを知りたいです。

これは今の私のコードの一部です:

command = "scp -p$port $user:$password@$host:$from $to"
$command 2>/dev/null

if (( $? == 0 )); then
    echo 'command was successful'
else
    echo 'damn, there was an error'
fi

私が理解していないことは次のとおりです。

  • 3行目、なぜ私は2後ろに置く必要があり$commandますか?
  • 5行目、これは正確には何$ですか?
4

2 に答える 2

26

$?最後に実行されたコマンドの戻りコードを意味します。

2>stderr(標準エラーストリーム)出力をにリダイレクトすることを意味し/dev/nullます。

于 2013-02-19T18:19:30.770 に答える
11

参考までに、これも機能します。

if some_command 2>/dev/null ; then
    echo 'command was successful'
else
    echo 'damn, there was an error'
fi
于 2013-02-19T18:52:46.753 に答える