Почему я получаю правильные результаты и ошибку в этом сценарии bash?

Я новичок в написании сценариев bash и изучении «если тогда». Когда я запускаю простой скрипт ниже, он выполняет и дает мне правильный результат, но я все равно получаю сообщение об ошибке. Имя скрипта – testcript.sh. Ошибка следующая: «./testscript: строка 5: [csh: команда не найдена]»

Может кто-нибудь сказать, что это значит?

#! /bin/bash MY_SHELL="csh" If ["$MY_SHELL" = "bash" then echo "You seem to like the bash shell." else Then "You don't seem to like the bash shell." fi 

  • Параметр одиночного кавычки сценария Bash с параметром globbing
  • Получение фоновых заданий путем записи в файл
  • Почему удаление файлов по названию мучительно медленное, а также исключительно быстрое?
  • Выполнение команд в процессе повышенного bash путем записи на стандартный ввод его родительского скриптового процесса
  • Передача кавычек и полных строк в bash -c или zsh -c
  • Уведомление слушателя, странное поведение
  • как суммировать вывод awk или другого выражения с помощью xargs
  • Что определяет «ll» в Fedora?
  • 2 Solutions collect form web for “Почему я получаю правильные результаты и ошибку в этом сценарии bash?”

    Давайте рассмотрим эту строку за строкой:

     #! /bin/bash MY_SHELL="csh" 

    Все идет нормально.

     If ["$MY_SHELL" = "bash" 

    Теперь эта строка имеет ряд ошибок:

    1. if и not If – shell – это случай senstive, поэтому foo и FOO различаются
    2. Должно быть пробел после символа
    3. Вам понадобится ] в конце теста с предыдущим пространством.

    Это означает, что строка должна больше понравиться, if [ "$MY_SHELL" = "bash" ]

     then echo "You seem to like the bash shell." else 

    Они хороши

      Then "You don't seem to like the bash shell." 

    Вы хотите echo здесь. Помните о чувствительности к регистру.

     fi 

    Результат:

     #! /bin/bash MY_SHELL="csh" if [ "$MY_SHELL" = "bash" ] then echo "You seem to like the bash shell." else echo "You don't seem to like the bash shell." fi 

    Изменить: как только вы становитесь более комфортно с помощью сценариев оболочки, https://www.shellcheck.net/ – полезный сайт для проверки подлинности. Выход ошибки не всегда ясен, но обычно это полезно для указания ошибок!

    Вам понадобится пробел после [ и до ] поскольку скобки на самом деле являются командами! Так:

     if [ "$shell" = "bash" ]; 

    Есть и другие ошибки, которые я не указывал, так как это тот, который вы просили.

    Interesting Posts

    Установка частоты повторения клавиатуры USB автоматически

    Какие файлы в / boot можно удалить без разрушения системы?

    Как добавить строку из списка в другой файл, когда указанная строка найдена?

    Является ли slash (/) частью имени корневого каталога Linux?

    Как читать первую и последнюю строку от выхода cat?

    Тест, если команда принимает конкретную опцию

    SED: вставить что-то после второй последней строки?

    Debian: Как разрешить ошибку перемещения?

    Установить список приложений, разрешенных для выполнения непривилегированным пользователем

    gpg: невозможно открыть `- ': нет такого файла или каталога

    Как я могу получить kqemu или даже просто qemu для отображения в virsh-возможностях на CentOS 6.4?

    Ошибка при загрузке Ubuntu 14.04 – setterm: $ TERM не определен

    Уменьшить высоту заголовка в gnome 3 / gtk + 3

    Любой способ сделать диск (ZFS) недоступным?

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

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