Страницы

Поиск по вопросам

пятница, 5 апреля 2019 г.

Арифметика в 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
Все хорошо работает, кроме операций * и **
В чем может быть дело?


Ответ

for ops in + - * / % **
заключите по крайней мере * и ** в кавычки. а лучше — все аргументы:
for ops in '+' '-' '*' '/' '%' '**'
тогда оболчка не будет пытаться делать какие-либо подстановки.

Комментариев нет:

Отправить комментарий