Меньше, чем оператор «<», если оператор приводит к «Нет такого файла или каталога» - PullRequest
4 голосов
/ 19 августа 2011

Конечно, это очень просто - я все еще изучаю свой сценарий sh. Я получил: -

if [ $3 < 480 ]; then
  blah blah command
else
   blah blah command2
fi

$ 3 - переданная переменная, снова целое число. Однако при запуске этого скрипта он сообщает: -

line 20: 480: No such file or directory

Confused.

Ответы [ 3 ]

9 голосов
/ 19 августа 2011

Пожалуйста, используйте [ "$3" -lt 480 ], иначе оно будет рассматриваться как перенаправление ввода в скобках. Вот почему вы получили ошибку: 480: No such file or directory.

Для просмотра доступных альтернатив:

  • [ "$3" -lt 480 ] - числовое сравнение, совместимое со всеми оболочками POSIX
  • [ "$3" \< 480 ] - сравнение строк (обычно неверно для чисел!), Совместимо со всеми оболочками POSIX
  • [[ $3 < 480 ]] - сравнение строк (как правило, неправильно для чисел!), Только bash и ksh
  • (( $3 < 480 )) - сравнение чисел, только в bash и ksh
  • (( var < 480 )) - сравнение чисел, только bash и ksh, где $var - переменная, содержащая число

проверьте http://www.gnu.org/software/bash/manual/bashref.html#Bash-Conditional-Expressions, чтобы узнать больше информации.

3 голосов
/ 19 августа 2011

Я думаю, вы должны использовать:

if [ $3 -lt 480 ]; then
 blah blah command
else
 blah blah command2
fi
1 голос
/ 19 августа 2011

вероятно в состоянии, которое вам нужно использовать:

if [[ $3 -lt 480 ]]
...