- ベストアンサー
if文について
シェルについて殆ど無知なのでお聞きしたいのですが (質問内容自体シェルの内容に含まれないのかも知れませんが)、 if ( -e $xxx_DIR/$CHK_OK1 ) then rm $xxx_DIR/$CHK_OK1 と有った場合、$xxx_DIRで指定されたディレクトリに$CHK_OK1で指定されたファイル が有れば、そのファイルを消す。と言う解釈でOKでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
OKです。 No.2 の回答にある -s とは、「ファイルが存在し、かつサイズが0より大きい」ことを判定するためのものなので、これだと0バイトのファイル(ごく普通に存在します)はチェックできないことになってしまいます。 用途にもよりますが、普通は -e でいいのではないでしょうか? なお、UNIX によっては、-e のないものもあります。その場合は、-r(読み取り可能なら真)などを使うといいでしょう。 読み取り可能に設定しないファイルもたまにあるので、万全を期すなら、-w(書込み可能)や -x(実行可能)も OR 条件で指定してチェックするといいです。
その他の回答 (2)
- hananeko
- ベストアンサー率29% (5/17)
ファイルの存在を確認するのならば [-s] がいいと思います。 こんな感じでどうでしょうか。 #!/bin/sh dir="/test/" file="test.txt" if [ -s $dir/$file ] then rm $dir/$file echo "OK" else echo "ERR" fi
- natural
- ベストアンサー率37% (419/1115)
OKだと思います。 勿論消えるのは$CHK_OK1に指定されているファイルで、$xxx_DIRで指定されているディレクトリごと削除されるわけではありません。 #尚、この質問の内容はシェルスクリプトに含まれますよ。(^_^)
お礼
有り難うございます。 今仕事で急にシェルを組むことになって、解読していたんですが 前後の文を読んで「こうじゃないかなー」との推測しかつかなかったもので。
お礼
有り難うございます。 今仕事で急にシェルを組むことになって、解読していたんですが 前後の文を読んで「こうじゃないかなー」との推測しかつかなかったもので。 そしてさらに詳しい解説までしていただいて、本当に有り難うございます。