#bash #if-statement
#bash #if-оператор
Вопрос:
echo "Enter a grade"
read grade
if test $grade="A"
then
basic=6000
elif test $grade="B"
then
basic=5000
else
basic=4000
fi
echo "Your basic is $basic"
Когда я выполняю этот код в терминале с любой оценкой, он всегда возвращает «Ваш базовый уровень равен 6000». в чем ошибка в этом коде?
Ответ №1:
Вам нужно поставить пробел вокруг =.
Как и сейчас, вы просто даете тестовой команде один аргумент, который равен $grade=»A», поскольку аргументы разделяются пробелом. Если вы поставите пробелы вокруг =, то у test будет 3 аргумента, т. Е. (расширенный) $ grade, = и «A».
Таким образом:
echo "Enter a grade"
read grade
if test $grade = "A"
then
basic=6000
elif test $grade = "B"
then
basic=5000
else
basic=4000
fi
echo "Your basic is $basic"
Ответ №2:
#!/bin/bash
echo "Enter a grade"
# Read single char
read -n 1 grade
echo $grade
if [ "$grade" == 'A' ]; then
basic=6000
elif [ "$grade" == 'B' ]; then
basic=5000
else
basic=4000
fi
echo "Your basic is $basic"
Комментарии:
1. Да, это ближе к тому, как я бы написал это сам. Возможно, также «read -p», т.е.
read -p "Enter a grade: "
.