この投稿はShell Script Advent Calendar 20日目です
また、Qiita 初投稿です
間違ったことなどを言っていたらコメント等でご指摘いただけると嬉しいです
はじめに
シェルスクリプト(bash)実行時に、引数が渡されなかった際に初期値(数値)を入れたい
引数が渡された時はその引数を使いたい
上記を実現したかったのにできなくて
至極基本的なところでハマったので、また同じことをするかもしれない()わたしのために備忘録
記事にすれば忘れないと思って。。
とりあえず思いついた方法で書いてみた(動いた)
if [ "$1" = "" ]; then
NUM=5
else
NUM=$1
fi
???「1行でかけるよ」 わたし「ええ なるほど?(驚愕)」
${変数名:-初期値}
なるほど(なるほど)
できないよ?
なぜ できなかったのか
代入してなかった(驚愕)(ケアレスミス)
自分で自分にびっくりした。。
$1(第一引数)が設定されていない時、以下のようにして引数の初期化をするんだと考えた
おそらく最初は、$1
という引数に直接値を代入できないか考えたんだと思う
${1:-5}
これだけ書いて実行してた。しかしエラる(そりゃそうじゃ)
5: command not found
ぐぐるとだいたい初期化で代入されていたのが文字列
だったので、数値
だからダメなのかとか色々考えてみたけど、代入してみたらできた
NUM=${1:-5}
あれできた(驚愕)
最初に書いてたif文
でも変数に代入してたじゃないか、、、
おわりに(感想)
先人たちが残してくれた記録は尊いし、だいたい合ってる。。
今抱えている問題を解決するために、 bash
引数
初期値
変数展開
とかでたんとぐぐったので、いろんな知識が少しだけついた気がした
この問題を解決するのにかかった時間は30分くらいだけど、日をまたいだら、勘違いに気がつけてあっさり解決した
やっぱり、休憩って大事だなと思いました(小並感)たくさん寝よう〜