シェル変数まとめ その2
19 June 2012
-
$?
直前に実行したコマンドの終了ステータス
-
$$
現在動作しているコマンドのプロセスID
-
$!
直前のバックグラウンドジョブのプロセスID
例)
$ emacs & [1] 2814 $ emacs & [2] 2816 $ echo $! 2816
-
$-
カレントシェルで設定されているフラグ
例)
$ echo $- himBH $ bash -r $ echo $- himrBH
-
$#
位置パラメーターの数
-
$*
位置パラメータの全部
-
$@
$*
と同じだが、"$@"
のようにクォーティングすると、各位置パラメータも個別にクォーティングされる -
$0
-$9
各位置パラメータ。 $0 はコマンド名称を表す
位置パラメータ関係は、シェルスクリプトの引数処理でよく使いますね。 以下の例では対話的にやってますが。 set で位置パラーメータを設定できます。
例)
$ set a b c d
$ echo $0
bash
$ echo $1
a
$ echo $2
b
$ echo $#
4
$ echo $*
a b c d
$ echo $@
a b c d
$ set "a b" c d
$ echo $1
a b
$ echo $#
3
$ echo $*
a b c d
$ echo $@
a b c d
$ echo "$*"
a b c d
$ echo "$@"
a b c d
$ ls "$*"
ls: a b c d にアクセスできません: そのようなファイルやディレクトリはありません
$ ls "$@"
ls: a b にアクセスできません: そのようなファイルやディレクトリはありません
ls: c にアクセスできません: そのようなファイルやディレクトリはありません
ls: d にアクセスできません: そのようなファイルやディレクトリはありません
例題中の "$*"
は "a b c d"
に "$@"
は "a b" "c" "d"
に展開されています。
echo "$*"
と echo "$@"
は同じ結果が表示されていますが、
ls "$*"
と ls "$@"
は解釈のされ方が違いますね。
以下は bash でのみ使える機能だが、
-
$_
直前のコマンドの第1引数を返す。
mkdir -p path/to/new/dir; cd $_
のように使う。
blog comments powered by Disqus