シェル(シェルスクリプト・shell script)のには$から始まる特殊な変数が存在します。今回はシェルスクリプトの特殊変数を見てみましょう。
今回はシェルスクリプトの特殊変数についてお勉強しよう!
目次
シェルスクリプトの特殊変数
シェルスクリプトには以下のように特別な変数があります。
特殊変数 | 意味 |
---|---|
$0 | シェルスクリプトのファイル名 |
$1 | 1 番目の引数 |
$2 | 2 番目の引数 |
$# | 引数の数 |
$? | 直前に実行されたコマンドの終了ステータス コマンドが正常終了したときには「0」が返される |
$$ | コマンド自身のPID (プロセスID) |
$! | バックグラウンドで実行されたコマンドのプロセスID |
$* | 全引数をまとめたリスト(”$1 $2 … $n”) |
$@ | 全引数の個別のリスト(”$1″ “$2″ … “$n”) |
$LINENO | この変数を使用している行の行番号 |
上記の特殊変数は参照だけ可能です。値を再代入することはできません。
$*と$@の違い
$*と$@は両方とも全ての引数のリストですが、何が違うのでしょうか?
$*は、これは全部の引数をまとめたもの、「”$1 $2 … $n”」を表しています。例えば引数が「a b c」であれば「”a b c”」なります。
$@は引数を個々にまとめたもの、「”$1″ “$2” … “$n”」を表しています。例えば引数が「a b c」であれば「“a” “b” “c”」なります。
シェルスクリプトの特殊変数の使用例
下記のようなexample.shを用意する。
#!/bin/sh
echo '$0 :' $0
echo '$1 :' $1
echo '$2 :' $2
echo '$# :' $#
echo '$ :' $
echo '$* :' $*
echo '$@ :' $@
echo '$LINENO :' $LINENO
echo '$? :' $?
実行すると以下のようになる。
$ ./test/sample.ksh aaa bbb ccc
$0 : ./test/sample.ksh
$1 : aaa
$2 : bbb
$# : 3
$ : 10027468
$* : aaa bbb ccc
$@ : aaa bbb ccc
$LINENO : 9
$? : 0
まとめ
シェルスクリプトには特別な変数があります。ぜひ覚えて使えるようになりましょう。
今回はシェルスクリプトの特殊変数についてお勉強したよ![/chat]