シェルスクリプトの特殊変数一覧と$*と$@の違い

特殊変数

シェル(シェルスクリプト・shell script)のには$から始まる特殊な変数が存在します。今回はシェルスクリプトの特殊変数を見てみましょう。

今回はシェルスクリプトの特殊変数についてお勉強しよう!

目次

シェルスクリプトの特殊変数

シェルスクリプトには以下のように特別な変数があります。

特殊変数意味
$0シェルスクリプトのファイル名
$11 番目の引数
$22 番目の引数
$#引数の数
$?直前に実行されたコマンドの終了ステータス
コマンドが正常終了したときには「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]

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次