私は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
(文字列の同一性に対する単一のテストを使用)、サポートシェルは単一の角かっこ表記(たとえば)も許可しているようです。上記のコードは次のとおりです。==
[
=
[[
==
==
bash
ksh
いいえbashでエラーが発生するため、質問にタグを付け直すことをお勧めします。