«Слишком много аргументов в [(тестовом) заявлении»

это мой первый сценарий «if-else» в Linux. Это дает ошибку
[: слишком много доводов

Код:

n=0 if [ $n % 2 -eq 0 ] then echo "even number" fi 

Как исправить это.

One Solution collect form web for “«Слишком много аргументов в [(тестовом) заявлении»”

Математика в bash должна выполняться в arithmetic context . В вашей текущей реализации вы поставляете «$ n», «%» и «2» в качестве аргументов для [ , который не выполняет математику. Вот пример, который выполняет математический арифметический контекст:

 if [ "$((n % 2))" -eq 0 ] 

В приведенном выше примере результаты $(()) расширяются оболочкой до того, как она увидится командой [ command. Это можно упростить, удалив вызов [ :

 if (( (n % 2) == 0 )) 
  • Как осуществляется перенаправление?
  • Приложения GUI не наследуют PATH из консольных приложений для родителей
  • Mac OS X: dircolors не найдены?
  • Использование команды чтения оболочки с функциями редактирования в реальном времени (например, чтение)
  • ps - в чем разница между -o comm и -o командой?
  • Уникальные линии, основанные на первом поле
  • zsh "echo SomeText >> ** / filename" в других оболочках
  • Как инициализировать массив с помощью awk и bash?
  • Есть ли отладчик GUI для сценариев оболочки
  • Где $ _ определяется POSIX?
  • Извлечение информации о трассировке с помощью gawk
  • Linux и Unix - лучшая ОС в мире.