
cshで該当ディレクトリにファイルがなければOK、あればエラーというような処理をしようと思っています。
しかし、下記のような記述ではうまくできません。
1)
***************************
if ( -e $DIR/*.* ) then
echo "NG"
exit 1
else
echo "OK"
endif
exit 0
***************************
if文でなく、外にだせばうまくいくのですが...
2)
***************************
test -e $DIR/*.*
if($status == 0) then
echo "NG"
exit 1
else
echo "OK"
endif
exit 0
****************************
if ( test -e $DIR/*.* ) then...
でもだめでした。
どうにかしてif文で一発判定をしたいと思っているのですが、正しい記述方法を教えてください。
よろしくお願いします。

No.6ベストアンサー
- 回答日時:
一発判定ではなくても、警告が出なければ良いんですよね?
***************************
set FILE = (`ls $DIR | grep *`)
if ( $#FILE != 0 ) then
echo "NG"
exit 1
else
echo "OK"
endif
exit 0
***************************
これなら警告でないはずです。
ありがとうございます。
確かにその方法だと警告はでませんね。
私がやった方法は同じようにlsコマンドを使用しますが、
lsの結果をファイルにリダイレクトして、ファイルサイズを0かどうか判断する、という方法でした。
でも、sgt_lkさんの方法だと余計なファイルも作成しないのでこちらのほうがいいですね。
ありがとうございました。
No.5
- 回答日時:
#4です。
{ の後と } の前に空白を空けてください。ただこれは、#4で書いたとおり、2)の「test -e $DIR/*.* が上手く行く場合」という条件付です。これって、ファイルが無いときは警告メッセージが出て、複数個あるとエラーになりませんか?
if({ true $DIR/*.* }) then
だと、ファイルが複数個あってもOKですが、ファイルが無いと警告メッセージが出ます。
おっしゃるとおり空白をあけるとできました。
ありがとうございます。
>これって、ファイルが無いときは警告メッセージが出て、>複数個あるとエラーになりませんか?
複数ファイルでエラーにはなりませんが、確かにファイルがないと警告がでます。実はそれがいやだったのでif文の中に組み込めばそれがなくなるかなと思ったのです。
でも結果的にはif文に組み込んでも警告メッセージがでてしまいました。。。
ただ文法的にはこちらのほうがきれいなので教えていただいたやり方を使おうと思います。
No.4
- 回答日時:
手元に環境が無いので試せませんが、
>test -e $DIR/*.*
>if($status == 0) then
で上手く行くなら、
if({test -e $DIR/*.*}) then
でいけるはずです。{ } の意味については、man csh の式の節の演算子の後あたりに書いてあります。
この回答への補足
回答ありがとうございます。
>if({test -e $DIR/*.*}) then
で試しましたが、
}がありません。といったメッセージが表示され、エラーになってしまいました。
csh manを読むと確かに{}を使用して実行できそうなのですが。。。

No.3
- 回答日時:
すみません。
確かに参考で述べた方法ですと${DIR}ディレクトリのチェックにしかならないかも知れません。最後の手段!!これでどうでしょうか?
if( `ls -1 ${DIR}/ | wc -l` != 0 ) then
なんとなく汚くなってしまいましたがこれが精一杯のような気がします。(自分がですが。。。)
いかがでしょうか?
ありがとうございます。
確かにこれだとうまくいきますね。
う~ん。if文のなかで解決しようとするとやはりこういったやり方になってしまいますよね。
ありがとうございました!!

No.2
- 回答日時:
#1です。
確認しました。
Bシェルの場合であれば、1)の条件式で正常に動作しました。
Cシェルでは”*.*: 曖昧”ですと怒られました。
Cシェルは融通が利かないところがあるので悩むことが多かった記憶があります。
単純にこれではどうでしょうか?
if( -e ${DIR}/ ) then
${DIR}配下のファイルの存在確認だけであればこれでも良いとおもいます。
この回答への補足
回答ありがとうございます。
if( -e ${DIR}/ ) then
にて試してみましたが、ファイルが存在しなくても条件は真となってしまいました。
つまり1)の例でいえば"NG"となってしまいました。
そちらの環境ではうまく動作したのでしょうか?
だとすればこちらの環境に問題があるのかもしれませんが。。

No.1
- 回答日時:
はじめまして。
1)のif ( -e $DIR/*.* ) thenをif( -e $DIR/*.* ) then
にしてみては如何ですか?
※ifの直後のスペースを削る。
それでも駄目な場合は、$DIR/*.*を"${DIR}/*.*"としてみる。
現時点で確認できる環境がありませんので、間違っていたらごめんなさい。
明日以降でしたら確認が取れます。
中途半端でごめんなさい。
この回答への補足
はじめまして。回答ありがとうございます。
しかし回答のとおりやってみましたが、だめでした。
*(アスタリスク)はこのようなケースでは使用できないのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
batである文字列内に特定の文字...
-
シェルスクリプトの変数の制限?
-
kshでのNULLの比較
-
Bシェル 文字列に含まれる特...
-
UWSCについて
-
if文について
-
sh スクリプト ipアドレス形式...
-
スクリプト中のexportコマンド...
-
Dirコマンドでフォルダ内ファイ...
-
エクセルの表にヘンな枠が・・・
-
SONYの音楽ソフト「x-アプリ」...
-
UNIX コマンドにおける # や円...
-
TOPコマンドで表示するCPU使用...
-
net use /d の強制実行
-
ファイル名についている「-」と...
-
Linux環境 grepで改行コード(CR...
-
pingは正常なのにtracerouteで...
-
ラズパイで『’test.service’をs...
-
テキストファイルから最終行の抽出
-
コマンドプロンプトにおけるコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batである文字列内に特定の文字...
-
シェルスクリプトの変数の制限?
-
スクリプト中のexportコマンド...
-
shellスクリプトから別のshell...
-
if文について
-
bash 条件式について
-
bashスクリプト
-
Bシェル 文字列に含まれる特...
-
【sh】tee コマンドの代替方法
-
【シェルスクリプト】whileルー...
-
cshの条件式について教えてくだ...
-
UWSCについて
-
Cシェルで標準エラー出力への...
-
シェルスクリプトで
-
shellで$入り変数に値を代入す...
-
awk スクリプト内で、関数の出...
-
シェルからのストアド起動
-
ファイルから文字列を読み込む...
-
文字列の一部を取り除きたい(...
-
Cシェルにあるコマンドの代わり
おすすめ情報