気まぐれな備忘録(仮)

いちようSEしてるので、プログラミングの備忘録的なものを書いてます

Linuxのシェルスクリプト変数の記号あれこれ

簡単な表記だと色々な書籍に載っているのだが、
全部が網羅されているわけではないので、
あまり使用しない表記に出くわしたら、ぐぐるしかない。

しかし、$(ダラー)、:(コロン)、=(イコール)などの記号が混じった表記は
ぐぐりづらいので、ちょっと整理してみた。

表記 意味
$NAME 変数NAMEを表す。
$1, $2, …, $9 各引数を表す。順に1番目、2番目、…、9番目を意味する。
${10}, ${11}, … 10番目、11番目、… の引数を意味する。
$0 実行されたシェルスクリプトのファイル名を表す。
$# 引数の数を表す。
$@ 引数をスペース区切りで表す。
$* 引数を環境変数IFSで区切って表す。IFSが空の場合、スペース区切りとなる。
$? 直前に実行された処理の終了コード値を表す。
$$ 現在実行中のシェルのプロセスID値を表す。
$! 直前に実行された処理のプロセスIDを表す。
${NAME:-VALUE} 変数NAMEが空の場合、値VALUEが設定される。
${NAME:=VALUE} 「${NAME:-VALUE}」と同じ。
${NAME:+VALUE} 変数NAME空でなければ、値VALUEが設定される。
${NAME:?VALUE} 変数NAMEが空の場合、値VALUEを標準エラーに出力し、スクリプトの実行を終了する。
${NAME:START} 変数NAMEのSTART番目以降の値を表す。
${NAME:START:LENGTH} 変数NAMEのSTART番目からLENGTH文字分の値を表す。

こんなカンジかしら。