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