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

это мой первый сценарий «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 )) 
  • Просмотр истории bash отдельного активного TTY
  • Поиск, где процесс читается в файле
  • Вход в систему с конкретной оболочкой при входе в терминал
  • sed, как заменить, когда в строке есть «http: //»?
  • Как отключить переменную в командной строке?
  • Получить конкретное слово и следующий текст
  • Как передавать файлы по ssh, а также изменять их разрешения на удаленном сервере без необходимости входа в систему дважды
  • Перенаправление и пробелы вывода
  • Возможно ли выполнить некоторые команды в подоболочке, не выходя сразу после этого?
  • Сценарий Bash с `set -e` не останавливается на команде` ... && ... `
  • Как использовать `find` для перехода в каталог этого файла
  • awk - читать программу И ввод со стандартного ввода?
  • Linux и Unix - лучшая ОС в мире.