Shell脚本 - 哪个词首先按字母顺序排列?

use*_*080 4 bash shell alphabetical

如何在两个单词之间按字母顺序检查哪些单词?例如在代码中

#!/bin/bash

var1="apple"
var2="bye"

if [ $var1 \> $var2 ]
then
echo $var1
else
echo $var2
fi
Run Code Online (Sandbox Code Playgroud)

我想要它打印苹果,因为苹果按字母顺序出现在bye之前,但它并没有按预期工作.我究竟做错了什么?

pax*_*blo 9

解决当前问题需要做的是扭转你的陈述的意义,因为"小于"运算符<不是>.

这样做会让它正常工作:

if [ $var1 \< $var2 ]
Run Code Online (Sandbox Code Playgroud)

或者,你可以使用[[它的变体并不要求转义:

if [[ $var1 < $var2 ]]
Run Code Online (Sandbox Code Playgroud)

我更喜欢后者,因为:

  1. 它看起来更好; 和
  2. [[变种是更富于表现力和强大.