リダイレクト
[command1] | [command2]
[command1]の標準出力を[command2]の標準入力とする。
[command1]の標準出力をリダイレクトしてcommand2の標準入力にする。
[command1] | xargs [command2]
こうすると、[command1]の結果を1行ずつ[command2]を実行する。
実際は1行ずつではなく、適当にまとめて実行してくれるとか何とか・・・。
実行結果を捨てる
$ command >/dev/null 2>&1
# 下は間違い
$ command 2>&1 >/dev/null
→標準エラー出力を標準出力のクローンとし、標準出力を/dev/nullのクローンとする。
→標準出力は/dev/nullになるが、標準エラー出力は標準出力のまま。
shの引数
(どこかのサイトに綺麗にまとまっていたので、それをメモしたもの。)
$# 引数の数。
「$ ./test.sh a b c」の場合、 $# を参照するとその値は 3 となる。
「$ . test.sh a b c」の場合でも、 $# を参照するとその値は 3となる。
$@ 全パラメータ。
「$ ./test.sh a b c」の場合、 $@ を参照するとその値は 「a b c」 となる。
$* $@ と基本的に同じ。何が違うんだろう?
$0 実行時のコマンド名。
「./test.sh」と実行した場合には「./test.sh」が、「/home/user/test.sh」と実行した場合には「/home/user/test.sh」が設定される。
ただし、「. test.sh」と実行した場合には「-bash」(そのユーザーが実行中のシェル)となった。(MacOS X Leopard)
$1 ~ $n それぞれの引数の値。
1番目に指定した引数は $1 に、n 番目に指定した引数は $n に設定される。
10番目以降の引数参照時は ${10} のように中括弧で囲む。
シェルスクリプト実行時の引数
sh -v
シェル実行前に、シェルの内容を出力
最終更新:2010年04月27日 10:40