В Bash вы можете выполнять числовые сравнения со знакомыми операторами, если используете арифметическую оценку:
if ((num1 ==num2 ))
if ((num1<0)) # in this context, < is not evaluated as a redirection operator
else if (( $num2 < 0 ))
Как вы можете видеть, я довольно свободно использовал пробелы и могу опустить знак доллара, если захочу. Вы должны знать об этом, однако:
a= # set to nothing, thus null
if (( a == 0 )); then echo "ok"; fi # echoes "ok" since a evaluates to 0
if (( $a == 0 )); then echo "ok"; fi # produces an error even if $a is quoted
Сравнение строк можно выполнить с помощью «<» и «>» вместо «-lt» и «-gt», если вы используете двойные квадратные скобки. Требования к пробелам такие же, как и для одинарных квадратных скобок.
s="b"
if [[ "$s" > "a" ]]
t= # null
if [[ $t < "a" ]] # evaluates to true
Как вы можете видеть в последнем примере, при использовании двойных квадратных скобок нет необходимости заключать в кавычки переменные для защиты от возможности того, что они будут нулевыми или неустановленными, в отличие от использования одинарных квадратных скобок.