#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 + - \* / % \*\*
Комментариев нет:
Отправить комментарий