- ベストアンサー
cshで変数に値が入っているかどうか見る方法
Cシェルです。 set TEXT = `ls *text` if ( $TEXT == "" ) then endif 上のようにすると、TEXTの中に複数入っている場合 if: 条件式構文が正しくありません と、エラーが出てしまいます。 textという拡張子のファイルが無かった場合、なにか 処理をさせるというような場合には ほかに方法ないでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
手っ取り早く、 if ( "${TEXT}" == '' ) then とするか、 set NUM_TEXT = `ls -1 *.text | wc -l` if ( ${NUM_TEXT} == 0 ) then とするとか。
その他の回答 (1)
- wolv
- ベストアンサー率37% (376/1001)
回答No.2
変数がセットされているかどうかをあらわす変数は、 「?」を使います。セットされていると1、されていなければ0を返します。 TEXTという変数がセットされているかどうかを調べる例では、 $?TEXT とします。 ところが、質問文の例では、lsでファイルがなかった場合にもTEXT変数が「セット」されてしまうので、この方法では調べられません。 変数にセットされた単語の数を調べる「#」を使うのがいいと思います。 set TEXT = () echo $#TEXT とすると、0を返します。 注意 set TEXT = "" echo $#TEXT とすると、1を返します。 参考: cshのオンラインマニュアル
質問者
お礼
こちらの方法でもできました。ありがとうございます。
お礼
手っ取り早くできました。 ありがとうございました。