как использовать условие if в Linux

#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: " .