プロが教える店舗&オフィスのセキュリティ対策術

シェルについて殆ど無知なのでお聞きしたいのですが
(質問内容自体シェルの内容に含まれないのかも知れませんが)、

if ( -e $xxx_DIR/$CHK_OK1 ) then
rm $xxx_DIR/$CHK_OK1

と有った場合、$xxx_DIRで指定されたディレクトリに$CHK_OK1で指定されたファイル
が有れば、そのファイルを消す。と言う解釈でOKでしょうか?

A 回答 (3件)

OKだと思います。


勿論消えるのは$CHK_OK1に指定されているファイルで、$xxx_DIRで指定されているディレクトリごと削除されるわけではありません。

#尚、この質問の内容はシェルスクリプトに含まれますよ。(^_^)
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/10/16 12:46

ファイルの存在を確認するのならば [-s] がいいと思います。


こんな感じでどうでしょうか。

#!/bin/sh
dir="/test/"
file="test.txt"

if [ -s $dir/$file ]
  then
  rm $dir/$file
  echo "OK"
else
  echo "ERR"
fi
    • good
    • 0

OKです。


No.2 の回答にある -s とは、「ファイルが存在し、かつサイズが0より大きい」ことを判定するためのものなので、これだと0バイトのファイル(ごく普通に存在します)はチェックできないことになってしまいます。
用途にもよりますが、普通は -e でいいのではないでしょうか?

なお、UNIX によっては、-e のないものもあります。その場合は、-r(読み取り可能なら真)などを使うといいでしょう。
読み取り可能に設定しないファイルもたまにあるので、万全を期すなら、-w(書込み可能)や -x(実行可能)も OR 条件で指定してチェックするといいです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/10/16 12:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!