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

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

Код:

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

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

  • Повторение stdin при запуске ed (1) скрипта
  • Декодирование «prog> file 2> & 1"
  • изменить оболочку в Solaris / SunOS для вашего пользователя только без доступа к / etc / passwd
  • Как скопировать файл во вложенные папки нескольких каталогов с одним и тем же префиксом?
  • Поддерживают ли оболочки рекурсию?
  • Как поймать ошибку в сценарии linux bash?
  • Что означает «$ {x %% *}» в sh?
  • сохранение вывода командной строки в текстовом файле?
  • One Solution collect form web for “«Слишком много аргументов в [(тестовом) заявлении»”

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

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

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

     if (( (n % 2) == 0 )) 
    Linux и Unix - лучшая ОС в мире.