Bash > 特殊な変数
更新日
2020-02-22
広告
Bashの特殊な変数について紹介します。
- $@ -- スクリプトの引数配列
- $数値 -- スクリプトの引数
- $# -- スクリプトの引数の数
- $! -- 直前に実行したプロセスのID
$@
$@は、スクリプトの引数の配列を表します。各引数は空白で連結されています。 以下のサンプル test-var.sh は、引数をそのまま出力するだけのスクリプトです。#!/bin/bash echo "args = $@"実行してみます。
test-special-var$ bash test-var.sh a b c args = a b c
$数値
$数値は、スクリプトの引数の1つを表します。 どの引数を指定するかは、数値で決まります。 $0は、スクリプトの実行パスを表します。
例えば、以下のサンプル test-var2.sh は、$0から$3までを出力するだけのスクリプトです。
#!/bin/bash echo "arg[0] = $0" echo "arg[1] = $1" echo "arg[2] = $2" echo "arg[3] = $3"これを、aとbという引数を与えて実行してみます。
test-special-var$ bash test-var2.sh a b arg[0] = test-var2.sh arg[1] = a arg[2] = b arg[3] =
引数は2つなので、$3は空白になっています。
また、$0は、実行時に指定したスクリプトのパスである点に注意してください。 例えば、同じtest-var2.shでも、以下のように実行すると、さっきとは$0の値が異なる結果になります。
test-special-var$ bash ../test-special-var/test-var2.sh a b arg[0] = ../test-special-var/test-var2.sh arg[1] = a arg[2] = b arg[3] =
$#
変数'$#'には、引数の数が格納されています。 この変数を使うことで、引数の数が想定通りかチェックできます。 以下がサンプルコードです。if [ $# -eq 0 ];then echo "no arguments" fiこのサンプルは、引数の数が0であれば、メッセージを出力します。
$!
$! には、直前に実行したプロセスのプロセスIDが格納されています。 例えば、以下のようにすると、JavaプログラムのプロセスIDを出力できます。#!/bin/bash java test.sample.MyApp & pid=$! echo $pidプロセスIDを覚えておけば、あとで kill することもできます。
広告
お問い合わせは sweng.tips@gmail.com まで。