Я пытаюсь написать сценарий калькулятора, но первый if
блокирует elif
. Я имею в виду, когда я пытаюсь запустить его, я нажимаю 1, но он работает так, как будто я нажал 2. Вот мой код.Bash if blocking elif
echo "For Advanced mode press 1"
echo "For Help press 2"
loop=1
while [ $loop=1 ]; do
read n
if [ $n=2 ]; then
echo "To use the calculator follow the promptings."
echo "If asked, the operators are: "
echo "* for multiplication,/for division."
echo "+ for addition, - for subtraction."
echo "% for modulus, which is division remainder"
echo "== is equal to, != is not equal to."
echo "** for exponents"
n=""
elif [ $n=1 ]; then
read a
break
fi
done
echo "_______________________"
echo "What would you like to do?"
echo "Press 1 for basic arith"
echo -n "Press 2 for geometry"
read choice
loop=2
if [ $choice=1]; then
while [ $loop=2 ]; do
echo -n "Enter X Value: "
read x
echo -n "Enter Operator: "
read op
echo -n "Enter Y Value: "
read y
ans=$((x $op y))
echo "$x $op $y = $ans"
echo "____________________"
echo "To input a new function, press enter"
read cont
done
fi
Хороший ответ. '[' подсчитывает количество аргументов, которые оно задано, и делает разные вещи на основе этого числа. Также обратите внимание, что встроенный bash '[[' более разумен в отношении некотируемых переменных (они заменяются пустой строкой, поэтому они не «теряют место» в качестве аргумента). –