中かっこ内の変数を評価する方法

中かっこ内の変数を評価する方法

私は最初にシェルスクリプトに触れ、次の表現に触れました。

${var:-val}そして${var-val}

${var:+val}そして${var+val}

${var:=val}そして${var=val}

それでは、彼らはどのように評価され、違いは何ですか?

答え1

以下は、さまざまな種類のパラメータ拡張と代替方法です。

  • ${var:-val}valvar設定されていないかnullの場合は、「デフォルト」${var}に置き換えられます。val
  • ${var:=val}まず、ifが設定されていないか、nullvalに割り当てられてから(すべての場合)。に置き換えられます。varvar${var}
  • ${var:+val}に置き換えられます何もないvar設定されていないか null の場合、valそうでない場合。

省略すると、:これらすべての定義から「またはnull」部分が削除されます。

すべてそこにいるbash(1)マンページPOSIX

いくつかの例が役に立ちます。

unset a
echo "${a:-default}"

defaultなどを生成しますecho "${a-default}"

a=
echo "${a:-default}"

再生成がdefault空白echo "${a-default}"行を出力します。

a=test
echo "${a:-default}"

testなどを生成しますecho "${a-default}"

unset a
echo "${a:=default}"

が生産されdefaultました(で確認)。adefaultecho "${a}"

この+形式は奇妙に思えるかもしれませんが、いくつかのステップで変数を設定するのに役立ちます。

PATH="${PATH}${PATH:+:}/blah/bin"

空でない場合にのみ前に追加されます:。これは、で始まるパスを防ぎます。/blah/binPATH:

関連情報