Linuxコマンドライン言語のBashの関数でデフォルトの引数を指定する方法について紹介します。
random
って関数で乱数32桁を簡単に生成できるようにしてたけどやっぱ桁数指定できたほうが良くて、以下のaliasを、
alias random="cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1"
こんなふうに改良。
random(){
ARG1=${1:-32}
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $ARG1 | head -n 1
}
random 8
とやれば8桁の乱数になる。
ARG1=${1:-32}
で、第一引数が指定されて入ればそれを変数に代入し、指定されていなければデフォルトとして32
の数値を代入、という意味になるっぽい。
ARG4=${4:-$(date)}
のようなコマンド展開して代入とかもできる。
関数だけでなく、.sh
のファイルに対しての引数に対してとしても同じように有効みたい。
参考文献:
How to write a bash script that takes optional input arguments? – Stack Overflow