読者です 読者をやめる 読者になる 読者になる

なお。のつれづれ

つれづれに書くよ

shの引数の利用

shの引数を扱い方メモ。

引数をスクリプト内から参照する

./sample.sh arg1 arg2

とshスクリプトを実行したときに、sample.sh中でarg1arg2の文字列はそれぞれ$1$2で参照できます。同様に、$3から$9にそれぞれ3つめから9つめまでの引数が順にわたされます。10コ以上引数を指定した際は、${10}のように変数を書いて扱ってください($10と書くと、変数$1と文字列0が連結したものと解釈されます)

引数の存在判定

わりとよくやるのが、引数があるかないかの判定。 これは、 -z条件式を使うと楽です。-z条件式は、文字列長さが0なら真を返します(shでの真は、値としては0になります)。

#!/bin/sh

if [ -z $1 ] ; then
    echo "Please args!"
else
    echo "First arg is [ $1 ]"
fi

上記をsample.shとして保存します。chomd 755 sample.shとでもして実行権限を与えてから実行します。

$ ./sample.sh

実行権限を与えなくても、sourceコマンドでも実行されます。

$ source sample.sh

上記のように引数を与えないと、出力は以下になります。

Please args!

英語のクオリティはつっこまない。

引数を与えると、以下の通り。

$ ./sample.sh hogehoge
First arg is [ hogehoge ]

以上。

補足

  • 文字列長が「0より大きい」場合を真とする条件は、-n条件式を使います。
  • #!/bin/shなど、読み込みインタプリタを記述する一行目のことをシェバン(シバン)行といいます