#linux #bash
Делаю простой калькулятор на bash:
#!/bin/bash
while [ 1 -eq 1 ]
do
read arg1 op arg2
if [[ "$arg1" -eq "exit" ]]
then
break
fi
flag=0
for ops in + - * / % **
do
if [[ "$op" = "$ops" ]]
then
flag=1
fi
done
if [[ $flag = 1 ]]
then
let "result = $arg1 $op $arg2"
echo "$result"
else
echo "error"
fi
done
echo "bye"
Смысл в том, что на вход я подаю 3 значения, аргументы и операция между ними. Например,
12 + 5.
Все хорошо работает, кроме операций * и **.
В чем может быть дело?
Ответы
Ответ 1
for ops in + - * / % ** заключите по крайней мере * и ** в кавычки. а лучше — все аргументы: for ops in '+' '-' '*' '/' '%' '**' тогда оболчка не будет пытаться делать какие-либо подстановки.Ответ 2
Или можно поставить экранирование for ops in + - * / % ** вот так for ops in + - \* / % \*\*
Комментариев нет:
Отправить комментарий