Операции сравнения, выполняемые с помощью конструкции [[ ]], могут оказаться предпочтительнее, чем [ ]. Аналогично, при сравнении чисел, в более выгодном свете представляется конструкция (( )).
a=8 # Все, приведенные ниже, операции сравнения -- эквивалентны. test "$a" -lt 16 && echo "да, $a 16" # "И-список" /bin/test "$a" -lt 16 && echo "да, $a 16" [ "$a" -lt 16 ] && echo "да, $a 16" [[ $a -lt 16 ]] && echo "да, $a 16" # Внутри [[ ]] и (( )) переменные (( a 16 )) && echo "да, $a 16" # не обязательно брать в кавычки. city="New York" # Опять же, все, приведенные ниже, операции -- эквивалентны. test "$city" \ Paris && echo "Да, Paris больше, чем $city" # В смысле ASCII-строк. /bin/test "$city" \ Paris && echo "Да, Paris больше, чем $city" [ "$city" \ Paris ] && echo "Да, Paris больше, чем $city" [[ $city Paris ]] && echo "Да, Paris больше, чем $city" # Кавычки вокруг $city не обязательны. # Спасибо S.C.