とあるエンジニアの備忘log
2012年6月19日火曜日
シェル変数まとめ その2
- `$?` 直前に実行したコマンドの終了ステータス - `$$` 現在動作しているコマンドのプロセス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 $_` のように使う。
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿