Почему этот простой сценарий bash вызывает ошибку if / then / else?

Если я попытаюсь запустить этот скрипт:

clear echo -n "please enter a value" read num if [ "$num" -eq 8 ] then echo "you entered 8" else echo "the number you entered was not 8" 

Я получаю следующий вывод / ошибку:

введите значение5
./script.sh: строка 9: синтаксическая ошибка около неожиданного токена `else '
./script.sh: строка 9: else '

Почему не работает этот скрипт?

One Solution collect form web for “Почему этот простой сценарий bash вызывает ошибку if / then / else?”

Вам не хватает точки с запятой или новой строки после предложения if , и нет конца if блока.

 #!/bin/bash clear echo -n "please enter a value" read num if [ "$num" -eq 8 ] then echo "you entered 8" else echo "the number you entered was not 8" fi 

Некоторые другие предложения:

  • Сценарии должны начинаться с #! чтобы сообщить системе, какой интерпретатор использовать
  • Ваше сравнение [ "$num" -eq 8 ] представляет собой числовое сравнение. Если вы не уверены, что пользователь действительно будет вводить число, подумайте об использовании сравнения строк, [ 8 = "$num" ]
  • Вы можете вставить приглашение в инструкцию read , read -p "Please enter a value: " num
  • `ls -l` файла и всех каталогов, ведущих к нему?
  • Как запустить команду для списка пакетов?
  • Python теперь считает, что аргументы являются файлами: Broken emerge, pip, livestreamer и большинство инструментов с использованием Python
  • Не удается получить доступ к внешнему жесткому диску.
  • Преобразуйте значение в «двоичный номер» в сценарии оболочки
  • лучшее использование find - rvm.sh
  • Принуждение emacs для запуска с помощью `-nw` при вызове из терминала
  • Есть ли какой-либо веб-сайт с командной строкой Linux для практических команд?
  • Как использовать цвета в MOTD?
  • Проблема форматирования
  • В чем разница между «&&» и «;», когда команды цепочки
  • Interesting Posts

    Как найти доступные версии пакета для понижения?

    Какой самый простой способ определить, какие сигналы отправляются процессу?

    Какова добавленная стоимость опции -T в GNU cp и mv?

    Было бы возможно, чтобы сетевая ссылка не была задействована при загрузке модуля ядра?

    Проблемы с загрузкой ядра ядра ядра 3.0.0-1 и NVIDIA

    Удаление последнего символа одним словом, но только если символ присутствует – в bash

    Поиск файла и исключение строк с указанной строкой

    Почему pulseaudio обрабатывает соединение с качеством звука с устройством BT?

    «. ~ / .bashrc "не устанавливает переменные, как ожидалось, в вызывающем скрипте

    Есть ли более современная или более популярная версия evms2?

    Как вызвать sadf, поэтому он автоматически обнаруживает последнюю статистику sar?

    Можно ли предотвратить создание файлов, являющихся общедоступными для чтения?

    идентифицировать файлы с не-ASCII или непечатаемыми символами в имени файла

    Как я могу вручную определить префикс grub?

    Java комментарии regex: egrep "(/ \ * \ * | / * | \ * / | \ * \ * /)" text.txt

    Linux и Unix - лучшая ОС в мире.