Skip to content

特殊変数#

Shell(特にbash)には多くの特殊変数があります。

以下が特殊変数の一覧を表形式でまとめたものです。

変数 説明
$0 スクリプト名またはシェル
$# 位置パラメータの数
$1, $2, ... $n 位置パラメータ。例: $1 は最初の引数
$* 全ての位置パラメータを1つの文字列として
$@ 全ての位置パラメータを個別の文字列として
$? 最後に実行されたコマンドの終了ステータス
$$ 現在のシェルのプロセスID
$! バックグラウンドで実行されたコマンドのプロセスID
$- 現在のシェルのオプション
$_ 最後に実行されたコマンドの最後の引数

説明#

Shell の特殊変数について、以下に詳しく説明します。

  1. $0:

    • 説明: 現在実行中のスクリプトの名前や、シェルを起動したときの名前を示します。
    • 例: スクリプト名が "myscript.sh" の場合、$0 は "myscript.sh" という値を持ちます。
  2. $#:

    • 説明: コマンドラインに渡された位置引数の数を示します。
    • 例: ./myscript.sh arg1 arg2 arg3 というコマンドを実行すると、$# は3になります。
  3. $1, $2, ... $n:

    • 説明: これらは位置引数を表します。$1 は最初の引数, $2 は2番目の引数というように進みます。
    • 例: ./myscript.sh foo bar の場合、$1 は "foo"、$2 は "bar" となります。
  4. $*:

    • 説明: すべての位置引数を1つの文字列として返します。引数はIFS(Internal Field Separator)で区切られます(デフォルトはスペース)。
    • 例: ./myscript.sh a b c の場合、$* は "a b c" という文字列になります。
  5. $@:

    • 説明: すべての位置引数を個別の文字列として返します。この特性はクォートで囲むと明確になります。
    • 例: "$@" は "a" "b" "c" と3つの別々の文字列になります。
  6. $?:

    • 説明: 直前に実行されたコマンドの終了ステータスを示します。成功すると0、失敗すると非0の値が返されます。
  7. $$:

    • 説明: 現在のシェルスクリプトのプロセスIDを示します。
  8. $!:

    • 説明: 最後にバックグラウンドで実行されたプロセスのプロセスIDを示します。
  9. $-:

    • 説明: シェルが起動されたときにセットされたオプションを表示します。
  10. $_:

    • 説明: 直前に実行されたコマンドの最後の引数を示します。

これらの特殊変数は、シェルスクリプトやコマンドラインでの操作を柔軟に行うために非常に役立ちます。