Linuxでは、次の2つのパラメータ置換オプションの違いを知りたいです。
echo ${MESG:? "HI"}
echo ${MESG:- "HI"}
彼らはみんな同じことをしているようです。
ベストアンサー1
bash
マニュアルから(POSIX規格同様のフレーズがあります):
${parameter:-word}
:デフォルト値の使用。設定されていないか null の場合、parameter
置き換える拡張子です。それ以外の場合、word
値は置き換えられます。parameter
${parameter:?word}
:空または設定されていない場合のエラー表示。 nullまたは設定されていない場合、parameter
拡張word
(または存在しない場合はメッセージword
)が標準エラーに書き込まれ、シェル(対話型でない場合)が終了します。それ以外の場合、parameter
値は置き換えられます。
変数が空でない文字列の場合は、MESG
同じことを行います(変数の値に展開MESG
)。空またはまったく設定されていない場合は、${MESG:-HI}
文字列に置き換えられ、標準エラーが表示され、HI
現在のシェルセッションを終了します(対話式セッションではない場合)。${MESG:?HI}
HI