このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】特殊な変数

特殊な変数

 シェルスクリプトでは、コマンドと同様に引数を使うことができます。引数は特殊な変数で参照され、スクリプトの名前や引数、プロセスID、最後に実行したコマンドの終了ステータスなどを格納します。以下の表に、引数を表す特殊な変数をまとめます。

変数説明
$0スクリプトの名前
$1最初の引数
$22番目の引数
$@すべての引数(スペース区切り)
$#引数の数
$$現在のシェルプロセスID
$?最後に実行したコマンドの終了ステータス
特殊な変数

特殊な変数に格納されている値を確認するシェルスクリプト

 以下の特殊な変数に格納されている値を確認するためのシェルスクリプトを作成します。このスクリプトを実行すると、各特殊な変数の値が表示されます。

テキストエディタ(nanoエディタ)などで「check_vars.sh」を作成します。

・「nano check_vars.sh 」コマンドを実行します。

user01@ubuntu-vm:~$ nano check_vars.sh

 以下のシェルスクリプトを入力したら、「Ctrl + S」 を押して、内容を保存して「Ctrl + X」 を押して nano を終了します。

スクリプト例:check_vars.sh

#!/bin/bash
# スクリプト名と引数を表示する

echo "スクリプトの名前: $0"
echo "最初の引数: $1"
echo "2番目の引数: $2"
echo "すべての引数 (\$@): $@"
echo "引数の数: $#"
echo "現在のシェルプロセスID: $$"
echo "最後に実行したコマンドの終了ステータス: $?"

スクリプトの内容の解説

コマンド説明
#!/bin/bashスクリプトが bash シェルで実行されることを指定します。
echo "スクリプトの名前: $0"スクリプトの名前を表示します。
echo "最初の引数: $1"最初の引数の値を表示します。
echo "2番目の引数: $2"2番目の引数の値を表示します。
echo "すべての引数 (\$@): $@"すべての引数(スペース区切り)
echo "引数の数: $#"引数の数を表示します。
echo "現在のシェルプロセスID: $$"現在のシェルプロセスIDを表示します。
echo "最後に実行したコマンドの終了ステータス: $?"最後に実行したコマンドの終了ステータスを表示します。
スクリプトの内容の解説

スクリプトの実行例

作成したシェルスクリプトを実行します。

・「bash check_vars.sh arg1 arg2」コマンドを実行します。

user01@ubuntu-vm:~$ bash check_vars.sh arg1 arg2
スクリプトの名前: check_vars.sh
最初の引数: arg1
2番目の引数: arg2
すべての引数 ($@): arg1 arg2
引数の数: 2
現在のシェルプロセスID: 3929
最後に実行したコマンドの終了ステータス: 0

シェルスクリプトの削除

この演習で作成したシェルスクリプトを削除します。

・「rm check_vars.sh」コマンドを実行し、「ls」コマンドで削除されたことを確認します。

user01@ubuntu-vm:~$ rm check_vars.sh
user01@ubuntu-vm:~$ ls
snap          テンプレート  ドキュメント  ピクチャ      公開
ダウンロード  デスクトップ  ビデオ        ミュージック

まとめ

 このスクリプトを使用することで、特殊な変数の値を簡単に確認できます。これにより、シェルスクリプトのデバッグや引数の扱いを理解するために役立ててください。