Bash でデフォルト値を割り当てる

Aashish Sunuwar 2022年3月21日
Bash でデフォルト値を割り当てる

この記事では、bash スクリプトの変数にデフォルト値を提供するために使用されるアプローチを紹介します。

Bash スクリプトの変数にデフォルト値を提供する

bash スクリプトでデフォルト値を提供する際に従う基本的なアプローチを以下に示します。

variable={$variable:-value}

ただし、最初にコロンを使用することで、これのより適切な短縮形を使用できます。

: ${variable:=value}

最初のコロンは引数を無視します。

${variable-value} または ${variable:-value} を使用する

echo ${greet-hello}
echo ${greet:-hello}
greet=
echo ${greet-hello}
echo ${greet:-hello}

出力:

hello
hello

hello

${greet-hello}${greet-hello} の使用の主な違いは、${greet-hello} は、変数 greet に一度も値が設定されていない場合に、デフォルト値 hello を使用することです。一方、${greet-hello} は、変数に値が設定されていないか、null に設定されている場合、つまり greet の場合にデフォルト値を使用します。

${variable:-value} または ${variable:=value} を使用する

echo ${greet:-Hello}
echo ${greet:-Namaste}
echo ${greet:=Bonjour}
echo ${greet:=Halo}

出力:

Hello
Namaste
Bonjour
Bonjour

:- を使用すると、変数がデフォルト値に置き換えられますが、:= を使用すると、変数にデフォルト値が割り当てられます。

与えられた例では、

  • ${greet:-Namaste}Namaste${greet:-Hello} として出力します。greet 変数は設定されていないため、デフォルト値に置き換えられました。
  • ${greet:=Bonjour} は、greet の値が設定されていないため、greet の値を Bonjour に設定します。
  • ${greet:=Halo} は、変数 greet が以前に設定された値、つまり Bonjour であるため、デフォルト値 Halo を使用しません。

関連記事 - Bash Variable