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で質問しましょう!
似たような質問が見つかりました
- UNIX・Linux 次の要件を満たすにはどのように修正したらよろしいでしょうか 1 2022/11/24 20:57
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- その他(プログラミング・Web制作) 単純なコマンドプロンプトが動きません。 2 2022/04/19 15:21
- Visual Basic(VBA) vba GetAsyncKeyState関数について 1 2023/08/24 12:08
- Excel(エクセル) vba 「Nextに対するForが見当たりません」のエラーが発生する原因 1 2022/10/21 15:46
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
batである文字列内に特定の文字...
-
スクリプト中のexportコマンド...
-
シェルスクリプトの変数の制限?
-
bashスクリプト
-
【シェルスクリプト】whileルー...
-
if文について
-
【sh】tee コマンドの代替方法
-
sh スクリプト ipアドレス形式...
-
ファイルから文字列を読み込む...
-
TOPコマンドで表示するCPU使用...
-
Dirコマンドでフォルダ内ファイ...
-
スクリプトのエラー「unexpecte...
-
pingは正常なのにtracerouteで...
-
ラズパイで『’test.service’をs...
-
エクセルの表にヘンな枠が・・・
-
テキストファイルから最終行の抽出
-
ファイル名についている「-」と...
-
Linux環境 grepで改行コード(CR...
-
bashでシングルクォート内の変...
-
空きIPアドレスを探す方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
batである文字列内に特定の文字...
-
スクリプト中のexportコマンド...
-
平均値の算出
-
bashスクリプト
-
ファイルから文字列を読み込む...
-
シェルスクリプトの変数の制限?
-
kshでのNULLの比較
-
Bシェル 文字列に含まれる特...
-
【シェルスクリプト】whileルー...
-
if文について
-
shellスクリプトから別のshell...
-
【sh】tee コマンドの代替方法
-
UWSCについて
-
sh スクリプト ipアドレス形式...
-
ログインシェル時のSHELL環境変数
-
Cシェルプログラムで、あるディ...
-
【シェルスクリプト】 ローカル...
-
シェルで and/or の優先順位に...
-
シェルスクリプトでうるう年判定
-
load averageが0.50を超えた時...
おすすめ情報