• ベストアンサー

cshで変数に値が入っているかどうか見る方法

Cシェルです。 set TEXT = `ls *text` if ( $TEXT == "" ) then endif 上のようにすると、TEXTの中に複数入っている場合 if: 条件式構文が正しくありません と、エラーが出てしまいます。 textという拡張子のファイルが無かった場合、なにか 処理をさせるというような場合には ほかに方法ないでしょうか?

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

手っ取り早く、 if ( "${TEXT}" == '' ) then とするか、 set NUM_TEXT = `ls -1 *.text | wc -l` if ( ${NUM_TEXT} == 0 ) then とするとか。

taurus4
質問者

お礼

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

その他の回答 (1)

  • wolv
  • ベストアンサー率37% (376/1001)
回答No.2

変数がセットされているかどうかをあらわす変数は、 「?」を使います。セットされていると1、されていなければ0を返します。 TEXTという変数がセットされているかどうかを調べる例では、 $?TEXT とします。 ところが、質問文の例では、lsでファイルがなかった場合にもTEXT変数が「セット」されてしまうので、この方法では調べられません。 変数にセットされた単語の数を調べる「#」を使うのがいいと思います。 set TEXT = () echo $#TEXT とすると、0を返します。 注意 set TEXT = "" echo $#TEXT とすると、1を返します。 参考:  cshのオンラインマニュアル

taurus4
質問者

お礼

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

関連するQ&A