Bourne シェル: パラメータ置換の末尾の "-" 演算子

Bourne シェル: パラメータ置換の末尾の

一部のプロセスに進行状況バーを追加するためのシェルスクリプトを読んでいます。ここ)。この行を理解できません(オプション)。

#BAR_EXT=${BAR_EXT-}

コメントは、これが各ファイルに拡張子を追加することを示しています。たぶんもっと読む必要があるかもしれませんが - 演算子の使い方に慣れていません。

私は次の選択肢を知っています。バッシュリファレンスマニュアル:

${parameter:-word}

上記はnull値をparameter。 (少なくとも私はそれを知っていると思います。)word${parameter-word}

しかし、それ以降は何も指定されておら-ず、何が起こっているのかよくわかりません。これは単にparameternull値を置き換えますか?通常、私はこれを実際の推測として受け入れ、読み続けたいと思います。しかし、言及されたコメントは次のとおりです。次へ追加ファイル拡張子。

ベストアンサー1

スクリプトにコマンドが含まれていますかset -u?これは意味する

パラメータ拡張時に設定されていない変数と特殊パラメータ「@」、「*」以外のパラメータはエラーとして扱われます。設定されていない変数またはパラメータに対して拡張しようとすると、シェルはエラーメッセージを出力し、対話型でない場合はゼロ以外の状態で終了します。

つまり、$BAR_EXT設定されていない場合は次のようになります。

BAR_FILE="$BAR_FILE$BAR_EXT"

失敗するでしょう。注文する

BAR_EXT=${BAR_EXT-}

$BAR_EXTまったく定義されていない場合は、明示的に空の文字列に設定され、これらのエラーを回避できます。

おすすめ記事