Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

Отсутствующие или неожиданные токены

Еще одна распространенная ошибка - забывают завершить составную команду, например if or в то время как. Давайте посмотрим, что произойдет, если мы удалим точку с запятой после тестXNUMX в if команда:



#! / Bin / Баш


# проблема: скрипт для демонстрации типичных ошибок number = 1

если [$ number = 1], то

echo "Число равно 1." еще

echo "Число не равно 1."

fi

#! / Bin / Баш


# проблема: скрипт для демонстрации типичных ошибок number = 1

если [$ number = 1], то

echo "Число равно 1." еще

echo "Число не равно 1."

fi


Результат такой:



[я @ linuxbox ~] $ беда

/ home / me / bin / Trouble: строка 9: синтаксическая ошибка рядом с неожиданным токеном

`еще '

/ home / me / bin / проблема: строка 9: `else '

[я @ linuxbox ~] $ беда

/ home / me / bin / Trouble: строка 9: синтаксическая ошибка рядом с неожиданным токеном

`еще '

/ home / me / bin / проблема: строка 9: `else '


Опять же, сообщение об ошибке указывает на ошибку, которая возникает позже, чем сама проблема. То, что происходит, действительно очень интересно. Напомним, if принимает список команд и оценивает код выхода последней команды в списке. В нашей программе мы хотим, чтобы этот список состоял из одной команды, [, синоним слова test. В [ команда принимает то, что следует за ней, как список аргументов; в нашем случае четыре аргумента: $ номер, 1, =и ]. После удаления точки с запятой слово тогда добавляется в список аргументов, что синтаксически допустимо. Следующий эхо команда тоже разрешена. Это интерпретируется как другая команда в списке команд, которые if будет оценивать код выхода. В еще появляется следующим, но он неуместен, поскольку оболочка распознает его как зарезервированное слово (слово, имеющее особое значение для оболочки), а не имя команды, отсюда и сообщение об ошибке.


Лучшие облачные вычисления для ОС в OnWorks: