x=abc, [[ $x > 123 ]] && echo yes || echo noのときにyesを返す方法は? [コピー]

x=abc, [[ $x > 123 ]] && echo yes || echo noのときにyesを返す方法は? [コピー]

これが文字列比較であることはわかりますが、「abc」と「123」がどのように互いに比較されるかはわかりません。よろしくお願いします!

答え1

これは、内部的に[[…]]<および>演算子が文字列比較を実行するためです。

文字列比較を実行すると、順序は(デフォルトでは)アルファベットで指定されます。ここで、aはbより速く(小さく)、cより小さいですa < b < c
数字は通常文字より小さい。1 < 2 < a

したがって、aa1 abc以降のソートは次よりも大きくなります123

$ [[ abc > 123 ]] && echo yes
yes

またはあなたが言ったように:

$ x=abc    y=123
$ [[ $x > $y ]] && echo yes
yes

関連情報