bashの基礎

今さらこんなものを、ちゃんと勉強しなきゃいけない羽目に陥るとは…。そう言えば昔cshスクリプトをたくさん作って喜んでいたなぁ。でも、ディープな使い方はしなかった。せいぜいifで条件分岐したりループまわすくらいね。しかし、愚痴っちゃあ愚痴だけど、この言語暗号みたいだね。-aは、論理積(2項演算)で、-bは、ファイルがブロック特殊ファイルかどうかのテスト(単項前置演算)、-cは、キャラクタ特殊ファイルかどうかのテスト(単項前置演算)、-dは、ディレクトリかどうかのテスト(単項前置演算)。マイナスのあとにアルファベット1文字だと、一般にファイル(ディレクトリ)をテストする単項前置演算だけど、-aと-oだけ例外なんだ。-oは、論理和ね。そんなわけで、例えば
[ -f "$FILE" -a -x $COMMAND ] && $COMMAND < "$FILE"
なんて書いてあると、「$FILEが(普通の)ファイルで、$COMMANDが実行可能なファイル(コマンド)だったら、そのファイルを標準入力として、コマンドに食わせる。」という意味。ふーん。-eq(等しい)とか-ne(等しくない)とか-gt(本当に大きい)とか…だったら、まだ直感的に分かりやすいけど、-aと-oはないよなぁ。せめて-andとか-orにしてくれれば良かったのに。ブツブツ。
改造・移植を安請け合いした、昔のソフトだったけど、このシェルスクリプトファイルがやたらたくさんあって、かつ歴史的理由により、もはや使ってない(意味のない)ものもあったりして、解読に時間がかかる。せっかく解読したと思ったら、全然使ってないものだったりすると、やたら力が抜けるね。もう解読は諦めちゃって、あるがままに使っちゃおうかな?移植してみて動かなかったら、そこから考える、とか(爆)。