33.3. Операции сравнения: Альтернативные решения


Операции сравнения, выполняемые с помощью конструкции [[ ]], могут оказаться предпочтительнее, чем [ ]. Аналогично, при сравнении чисел, в более выгодном свете представляется конструкция (( )).

  1. a=8
  2. # Все, приведенные ниже, операции сравнения — эквивалентны.
  3. test "$a" -lt 16 && echo "да, $a < 16"         # "И-список"
  4. /bin/test "$a" -lt 16 && echo "да, $a < 16"
  5. [ "$a" -lt 16 ] && echo "да, $a < 16"
  6. [[ $a -lt 16 ]] && echo "да, $a < 16"          # Внутри [[ ]] и (( )) переменные
  7. (( a < 16 )) && echo "да, $a < 16"             # не обязательно брать в кавычки.
  8. city="New York"
  9. # Опять же, все, приведенные ниже, операции — эквивалентны.
  10. test "$city" \< Paris && echo "Да, Paris больше, чем $city"  # В смысле ASCII-строк.
  11. /bin/test "$city" \< Paris && echo "Да, Paris больше, чем $city"
  12. [ "$city" \< Paris ] && echo "Да, Paris больше, чем $city"
  13. [[ $city < Paris ]] && echo "Да, Paris больше, чем $city"    # Кавычки вокруг $city не обязательны.
  14. # Спасибо S.C.