本を読む

読書やコンピュータなどに関するメモ

execによるリダイレクトで番号を自動で割り振る

 シェルスクリプトのリダイレクトでは、execを使うと一般的なプログラミング言語のopenみたいなことができます。

exec 5> out.txt

 こうしておいて、ファイルディスクリプターの5番にリダイレクトしてやれば、out.txtに出力されます。

ls >&5

 クローズは“番号>&-”。

exec 5>&-

 ただ、これだと空いてるファイルディスクリプター番号を自分で管理しなくてはなりません。そこで、最近のbash(4.1以降)やzshでは、数字のかわりに変数を指定すると、自動で割り振ってくれます。

exec {fd}> out.txt

 こうするとファイルディスクリプター番号が自動で割り振られて、その番号が変数fdに入ります。あとは番号のかわりに変数を指定します。

ls >&$fd
exec {fd}>&-

 …ただ、実際には多くの場合、execを使わなくてもコマンド群を{}や()で囲ってリダイレクトすれば済んだりするんですが。

参考:bash(1)、zshmisc(1)

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/915-58380e95

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad