クロスシェルスクリプトを実行し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情報ページを参照してください。)