« 正規表現 エスケープしなければいけない文字 | メイン | bashでランダム 簡易版 »
2007年06月11日
しぇる便利
[$$] スクリプトで作業用のファイルを作る場合,ファイル名の一部にこの $$ を含めよう.$$ はスクリプトを実行している sh のプロセス番号に置き換えられるので,スクリプトが同時に実行されても作業ファイルがぶつかることがない.たとえ自分だけのためのスクリプトでもプログラムから実行したり,メールの処理に使えば同時に走る可能性がある.
[クオート] スクリプトに現われる * や ? は対話的シェルと同様にそのパターンにマッチしたファイル名に展開される.cat $1 > /tmp/t.$$ とあって,第 1引数を表わす $1 が * に置き換えられたら,これがさらにファイル名に展開される.これを "$1" のようにダブルクオート "" で囲めば,ファイル名への展開はされない.また,set -f を実行しておけばやはりファイル名への展開はされない.さらに $1 を $1 のままにするにはシングルクオートでこれを囲む.
[ヒアドキュメント] 出力のファイルへの追加は >> で指示するが,これの逆向き << がヒアドキュメントである.例えば mail foo < [後始末] スクリプトにバグがあったり,割り込みキー (Control-C など) で実行を打ち切ったとき,作業ファイルを消去するといった後始末をしなければいけない.これには trap コマンドで trap "/bin/rm -f $tmp; exit 0" 0 1 2 15 のようにする.指定した番号のシグナル 1 2 15 を受けたときの動作を定める.シグナル番号 0 は正常終了時にも実行することを示す. 投稿者 muuming : 2007年06月11日 09:41コメント
コメントしてください