最終更新:2013-12-20 (金) 17:06:52 (3772d)  

Bash/特殊パラメータ
Top / Bash / 特殊パラメータ

http://linuxjm.sourceforge.jp/html/GNU_bash/man1/bash.1.html

シェルはいくつかのパラメータを特別扱いします。 このようなパラメータは参照されるだけであり、 値を代入することは許されません。

一覧

  • $* - (1 から始まる) 全ての位置パラメータに展開されます。 ダブルクォートの内部で展開が行われたときは、 それぞれのパラメータを特別な変数である IFS の最初の文字で区切って並べた 1 つの単語に展開されます。つまり、 $* は "$1c$2c..." と同じです。 ここで c は変数 IFS の値の最初の文字です。 IFS が設定されていなければ、パラメータは空白で区切られます。 IFS が空文字列の場合、パラメータの間には区切り文字は入らず、 全てのパラメータは繋げられます。
  • $@ - (1 から始まる) 全ての位置パラメータに展開されます。 ダブルクォートの内部で展開が行われたときは、 それぞれのパラメータは別々の単語に展開されます。 つまり "$@" は "$1" "$2" ... と同じです。 単語の中でダブルクォートの展開が行われるときには、 最初のパラメータの展開結果に元の単語のダブルクォートより前の部分が 結び付き、最後のパラメータの展開結果に元の単語のダブルクォートより 後の部分が結び付きます。 位置パラメータがない場合には、"$@" や $@ を展開しても無かったことになります (つまり取り除かれます)。
  • $# - 位置パラメータの個数を示す 10 進値に展開されます。
  • $? - 最後に実行されたフォアグラウンドのパイプラインの 終了ステータスに展開されます。
  • $-? - 現在のオプションフラグに展開されます。 これは起動のときに指定したり、組み込みコマンド set で設定したり、( -i オプション等で) シェル自身が設定したりします。
  • $$ - シェルのプロセス ID に展開されます。 () を使ったサブシェルの内部では、$ はサブシェルではなく、 現在のシェルのプロセス ID に展開されます。
  • $!? - 最後に実行されたバックグラウンド (非同期) コマンドの プロセス ID に展開されます。
  • $0 - シェルまたはシェルスクリプトの名前に展開されます。 これはシェルの初期化時に設定されます。 コマンドを記述したファイルを指定して bash を起動した場合、 $0 にはそのファイルの名前が設定されます。 -c オプションを付けて bash を起動した場合、実行する文字列の後に引き数があれば、その最初の値が $0 に設定されます。引き数がなければ、 bash を起動するときに使用した名前が引き数 0 として与えられ $0 に設定されます。
  • $_ - シェルの起動時には、環境または引き数リストで渡された、 実行するシェルまたはシェルスクリプトの絶対パス名が設定されます。 その後では、直前のコマンドに対する最後の引き数 (展開後のもの) に展開されます。 また、実行する各コマンドの完全なパス名が設定され、 そのコマンドの環境にエクスポートされます。 メールをチェックするときには、 このパラメータは現在チェックしているメールファイル名を保持します。

関連