@ka2n

Technology and beer

シェルスクリプトの変数が空だったら指定の値にする時のTips

シェルスクリプトで変数が空の場合にだけ代入することができる便利な機能がある。

${variable:=value}

$variableが空の場合のみvalueが値に入ります。

しかし、実際に入力してみるとcommand not foundになる。

bash-4.3$ ${variable:=value}
bash: value: command not found

これはなぜかというと、変数への代入と同時にシェルに対してその値を返すから。 valueという文字をシェルが実行しようとする。

こういう場合は

bash-4.3$ : ${variable:=value}

:で返り値を無視してやればよいようだ。

related: シェル変数の定義状況に応じて任意の値を返す方法 - Qiita