Bash でデフォルト値を割り当てる
Aashish Sunuwar
2022年3月21日
この記事では、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
を使用しません。