プロが教えるわが家の防犯対策術!

Cシェルで
set AA="aa"
set BB="bb"
if( $AA > $BB )then
echo "$AA > $BB"
endif
というような判定がしたいのですが、
上記の場合、”if: 条件式構文が正しくありません”というエラーが出力されます。
Cシェルの場合、文字列の比較は
ifでイコールかノットイコールかは判定できますが、文字コードの大小比較が出来ないようですが、
文字列の大小比較をするにはどうすればよいのしょうか

A 回答 (1件)

expr コマンドが使えます。

コマンドを if の条件式で使うときは、{ } で囲みます。

if({ expr "$AA" \> "$BB" >/dev/null }) then
.....
endif

ただし、$AA $BB ともに数字のときは数値として比較するので、常に文字列として比較したいなら、
expr A"$AA" \> A"$BB" >/dev/null
のように両方の先頭に同じ文字をくっつければ$AAが数値でも全体としては数値じゃなくなるので文字列比較になります。

expr 2 \> 10   →偽
expr A2 \> A10  →真
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
完璧です。
助かりました。

お礼日時:2005/06/24 20:55

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