プログラミング

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

特殊変数

シェル(シェルスクリプト・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を用意する。

実行すると以下のようになる。

まとめ

シェルスクリプトには特別な変数があります。ぜひ覚えて使えるようになりましょう。

ペンちゃん
ペンちゃん
今回はシェルスクリプトの特殊変数についてお勉強したよ!