スクリプトのいずれかのコマンドでエラーが発生した場合はどうなりますか?

スクリプトのいずれかのコマンドでエラーが発生した場合はどうなりますか?

私はAlienを使用してRPMを.debに変換します。私はAlienwareのスクリプト変換を使用していません。実際、スクリプトは互換性のない構文を出しました。私の質問は、この非互換性を解決する方法に関するものではなく、エラーが発生してもスクリプトが正常に実行できるようにする方法についてです。

問題となる部分は次のとおりです。

if [ "`/bin/echo '\c'`" == "" ]; then
   ECHO_ESC="/bin/echo"
else
   ECHO_ESC="/bin/echo -e"
fi

これにより、次のような「エラー」が発生します。

./avsetup_mcc: 11: [: \c: unexpected operator

それでも、スクリプトは完全に実行されます。では、ここで何が起こっているのでしょうか?

ベストアンサー1

[「特別な組み込み」ではなく、以下に基づいています。POSIXUtility syntax error (option or operand error)特殊でない組み込みのShall not exit非対話型シェル(「スクリプト」)の1つです。

シェルが終了しないのはなぜですか?スクリプトは、ブランチにECHO_ESC関係なくif通常の項目に設定されているため、完全に機能します。

エラーメッセージで提案されているものとは異なり、エラーは次のようには発生しませんが、withは無効です\c(文字列の同一性に対する単一のテストを使用)、サポートシェルは単一の角かっこ表記(たとえば)も許可しているようです。上記のコードは次のとおりです。==[=[[====bashkshいいえbashでエラーが発生するため、質問にタグを付け直すことをお勧めします。

おすすめ記事