HOWTO · Bash
Bash でデフォルト値を割り当てる
この記事では、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を使用しません。