変数のデフォルト値
シェルスクリプトで変数が未定義の場合や空の場合にデフォルト値を設定する方法。
${var:-default}
${var:-default}
のように${}
で変数を囲み、:-
でデフォルト値を指定する。${var:-default}
はvar
が定義されている場合は変数var
の値を、未定義の場合や空の場合は文字列default
を表示する。
例えば以下のようなスクリプトの場合。
#!/bin/bash
A="apple"
echo ${A:-banana} # apple
B=""
echo ${B:-banana} # banana
echo ${C:-banana} # banana
A
はapple
が代入されているのでapple
が表示される。
B
は空文字が代入されているのでデフォルト値banana
が表示される。
C
は未定義なのでデフォルト値banana
が表示される。
$ ./script.sh
apple
banana
banana
ただし、スクリプト中で定義していなくても環境変数として定義していればその値が表示される。
$ C="cherry" ./script.sh
apple
banana
cherry
スクリプトの引数のデフォルト値
スクリプトの引数は$1
, $2
, $3
…のように$
でアクセスできる。
引数が未定義の場合や空の場合にデフォルト値を設定する方法は以下の通り。
${1:-default}
変数と同様に${1:-default}
のように${}
で引数を囲み、:-
でデフォルト値を指定する。${1:-default}
はスクリプト実行時に第1引数が渡されている場合はその値を、未定義の場合や空の場合は文字列default
を表示する。
例として以下のようなスクリプトの場合。
#!/bin/sh
echo ${1:-apple}
引数あり・なしの場合で実行すると以下のようになる。
$ ./script.sh
apple
$ ./script.sh banana
banana
\第一線のプログラマーの行動原理を学べる!/