LoginSignup
0
1

More than 3 years have passed since last update.

この投稿は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分くらいだけど、日をまたいだら、勘違いに気がつけてあっさり解決した

やっぱり、休憩って大事だなと思いました(小並感)たくさん寝よう〜

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1