0

私はこの式 ${varname:-text} に出くわしました,そして 3 つの他の同様の形式:

${varname-text}

${varname:=text}

${varname:?text}

文章の代用みたいなのですが、この表現はどう使うのでしょうか?

4

1 に答える 1

0

POSIXシェルの標準ドキュメントでは、これらの特別なパラメータ拡張形式について次のように説明しています。

${parameter:-word}

デフォルト値を使用します。パラメータが設定されていないかnullの場合、単語の展開が置き換えられます。それ以外の場合は、パラメータの値に置き換えられます。

${parameter:=word}

デフォルト値を割り当てます。パラメータが設定されていないかnullの場合、単語の展開がパラメータに割り当てられます。いずれの場合も、パラメータの最終値に置き換えられます。この方法で割り当てることができるのは、位置パラメータや特別なパラメータではなく、変数のみです。

${parameter:?[word]}

NullまたはUnsetの場合はエラーを示します。パラメータが未設定またはnullの場合、ワードの展開(またはワードが省略されている場合は未設定であることを示すメッセージ)は標準エラーに書き込まれ、シェルはゼロ以外の終了ステータスで終了します。それ以外の場合は、パラメータの値に置き換えられます。インタラクティブシェルを終了する必要はありません。

そこに示されている例と、より完全な表があります。すべてのPOSIX準拠のシェルはそれらをサポートする必要があります。のようbashに、追加のフォーマットを含むものもあります。

于 2012-10-04T06:02:57.993 に答える