Если утверждения, принимающие да или нет в скрипте bash? - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь принять пользовательский ввод «да» или «нет» в вопросе и в зависимости от ответа прочтите значение моей переменной. Я никогда не могу заставить команды, прикрепленные к переменным, работать, или мои операторы if, чтобы принимать да или нет. Он просто продолжает «неверный ответ». Пожалуйста, дайте мне знать, как на самом деле заставить их работать в сценарии bash. Я продолжаю искать разные вещи, чтобы попробовать, но ничего не работает. Вот что у меня сейчас:

yesdebug='echo "Will run in debug mode"'

nodebug='echo "Will not run in debug mode"'

echo "Would you like to run script in debug mode? (yes or no)"

read yesorno

if [$yesorno == 'yes']; then
        $yesdebug

elif [$yesorno == 'no']; then
        $nodebug

else
        echo "Not a valid answer."
        exit 1

fi

1 Ответ

6 голосов
/ 25 мая 2020

Есть несколько проблем с вашим кодом:

  1. Невозможно поставить пробелы вокруг [ (которое является именем команды) и ] (который является обязательным, но не имеющим функции аргумента для ]).
  2. Обработка содержимого переменной как команды; вместо этого используйте функции.

yesdebug () { echo "Will run in debug mode"; }

nodebug () { echo "Will not run in debug mode"; }

echo "Would you like to run script in debug mode? (yes or no)"

read yesorno

if [ "$yesorno" = yes ]; then
    yesdebug

elif [ "$yesorno" = no ]; then
    nodebug
else
    echo "Not a valid answer."
    exit 1
fi
...