• ベストアンサー

Cシェルでの文字列大小比較

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

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.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  →真

bunarin
質問者

お礼

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

関連するQ&A