Делаю простой калькулятор на 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
Все хорошо работает, кроме операций * и **
В чем может быть дело?
Ответ
for ops in + - * / % **
заключите по крайней мере * и ** в кавычки. а лучше — все аргументы:
for ops in '+' '-' '*' '/' '%' '**'
тогда оболчка не будет пытаться делать какие-либо подстановки.
Комментариев нет:
Отправить комментарий