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

это мой первый сценарий «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 )) 
  • сценарий оболочки для самоубийства
  • он-лайн подсчет уникальных строк
  • Как перенаправить вывод команд Linux на конкретную строку и столбец в csv?
  • Создать абсолютную символическую ссылку на текущий каталог
  • замените '_' на ',' в файле, который содержит список имен файлов
  • Использование sudoers для запуска команды php
  • «Grep-ing» от A до B в выводе hexdump
  • Нажмите кнопку html через скрипт оболочки?
  • Перезагрузка zsh при изменении размера окна терминатора
  • Есть ли способ переключиться на «su -» после переключения пользователей через «su»?
  • Правильный способ распространения сценариев оболочки
  • Linux и Unix - лучшая ОС в мире.