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

Cシェルです。

set TEXT = `ls *text`
if ( $TEXT == "" ) then

endif

上のようにすると、TEXTの中に複数入っている場合
if: 条件式構文が正しくありません
と、エラーが出てしまいます。

textという拡張子のファイルが無かった場合、なにか
処理をさせるというような場合には
ほかに方法ないでしょうか?

A 回答 (2件)

手っ取り早く、



if ( "${TEXT}" == '' ) then

とするか、

set NUM_TEXT = `ls -1 *.text | wc -l`
if ( ${NUM_TEXT} == 0 ) then

とするとか。
    • good
    • 0
この回答へのお礼

手っ取り早くできました。
ありがとうございました。

お礼日時:2004/04/07 16:31

変数がセットされているかどうかをあらわす変数は、


「?」を使います。セットされていると1、されていなければ0を返します。

TEXTという変数がセットされているかどうかを調べる例では、
$?TEXT
とします。

ところが、質問文の例では、lsでファイルがなかった場合にもTEXT変数が「セット」されてしまうので、この方法では調べられません。

変数にセットされた単語の数を調べる「#」を使うのがいいと思います。
set TEXT = ()
echo $#TEXT
とすると、0を返します。

注意
set TEXT = ""
echo $#TEXT
とすると、1を返します。

参考:
 cshのオンラインマニュアル
    • good
    • 0
この回答へのお礼

こちらの方法でもできました。ありがとうございます。

お礼日時:2004/04/07 16:37

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