• ベストアンサー

if文について

シェルについて殆ど無知なのでお聞きしたいのですが (質問内容自体シェルの内容に含まれないのかも知れませんが)、 if ( -e $xxx_DIR/$CHK_OK1 ) then rm $xxx_DIR/$CHK_OK1 と有った場合、$xxx_DIRで指定されたディレクトリに$CHK_OK1で指定されたファイル が有れば、そのファイルを消す。と言う解釈でOKでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.3

OKです。 No.2 の回答にある -s とは、「ファイルが存在し、かつサイズが0より大きい」ことを判定するためのものなので、これだと0バイトのファイル(ごく普通に存在します)はチェックできないことになってしまいます。 用途にもよりますが、普通は -e でいいのではないでしょうか? なお、UNIX によっては、-e のないものもあります。その場合は、-r(読み取り可能なら真)などを使うといいでしょう。 読み取り可能に設定しないファイルもたまにあるので、万全を期すなら、-w(書込み可能)や -x(実行可能)も OR 条件で指定してチェックするといいです。

ami_mizuno
質問者

お礼

有り難うございます。 今仕事で急にシェルを組むことになって、解読していたんですが 前後の文を読んで「こうじゃないかなー」との推測しかつかなかったもので。 そしてさらに詳しい解説までしていただいて、本当に有り難うございます。

その他の回答 (2)

  • hananeko
  • ベストアンサー率29% (5/17)
回答No.2

ファイルの存在を確認するのならば [-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)
回答No.1

OKだと思います。 勿論消えるのは$CHK_OK1に指定されているファイルで、$xxx_DIRで指定されているディレクトリごと削除されるわけではありません。 #尚、この質問の内容はシェルスクリプトに含まれますよ。(^_^)

ami_mizuno
質問者

お礼

有り難うございます。 今仕事で急にシェルを組むことになって、解読していたんですが 前後の文を読んで「こうじゃないかなー」との推測しかつかなかったもので。