Я делаю сценарий bash, чтобы выполнять базовые операции и когда я это делаю:
if [ $2 == "*" ]
это не работает.
Как я могу проверить звездочку?
Я делаю сценарий bash, чтобы выполнять базовые операции и когда я это делаю:
if [ $2 == "*" ]
это не работает.
Как я могу проверить звездочку?
Вы должны экранировать или заключить звездочку в командную строку:
./calculator.sh 2 \* 2
./calculator.sh 2 '*' 2
и заключите $2
в двойные кавычки:
if [ "$2" == "*" ]
Проблема не в том, что оператор if
не работает, а в том, что звездочка в командной строке была залитой.
Так что, если ваш скрипт называется mycalc
и запускается из командной строки, вы делаете
mycalc 2 * 3
Символ *
будет выделен и преобразован во все имена файлов в текущей папке.
Чтобы избежать расширения, вам нужно сделать
mycalc 2 \* 3
\
Экранирует звездочку и пропускает ее без изменения.
Возможно, вы захотите рассмотреть x
для операции умножения, чтобы избежать этого.
Найдите значение ASCII *
, используя команду ниже
printf "%d\n" "'`echo "*" | awk '{print $1}'`"
и использовать это значение для проверки состояния.