b=${b:-"/data"} 式がどのように機能するか

b=${b:-"/data"} 式がどのように機能するか

クロスシェルスクリプトを実行しBUILDDIR=${BUILDDIR:-"/data"}て実験した後、元のBUILDDIRが存在し、空の文字列でない場合はそれを取得し、それ以外の場合は/ dataに設定します。私が理解していないのは、この式がどのように機能するか、つまりなぜ:-演算子、そしてどのように機能するのかです。

答え1

これは(幸いなことに)パラメータ拡張。つまり、次のような緩い定義があります。

  • ${VAR:-value}$VAR可能であれば使用し、そうでなければvalue
  • ${VAR:=value}可能であれば使用し$VAR、そうでない場合に設定して$VAR使用valueしてください。value
  • ${VAR:?value}$VAR(定義されていない場合は終了)と${VAR:+value}(反対:-)が存在しますが、実際には見たことがありません。
  • ${VAR:offset}そして${VAR:offset:length}部分文字列を取得します$VAR

(プレフィックスまたはサフィックスを削除するか、一般的な置換を実行する方法はたくさんあります。上記のbash情報ページを参照してください。)

関連情報