1

Я делаю сценарий bash, чтобы выполнять базовые операции и когда я это делаю:

if [ $2 == "*" ]

это не работает.

Как я могу проверить звездочку?

3 ответа3

5

Вы должны экранировать или заключить звездочку в командную строку:

./calculator.sh 2 \* 2
./calculator.sh 2 '*' 2

и заключите $2 в двойные кавычки:

if [ "$2" == "*" ]
2

Проблема не в том, что оператор if не работает, а в том, что звездочка в командной строке была залитой.

Так что, если ваш скрипт называется mycalc и запускается из командной строки, вы делаете

mycalc 2 * 3

Символ * будет выделен и преобразован во все имена файлов в текущей папке.

Чтобы избежать расширения, вам нужно сделать

mycalc 2 \* 3

\ Экранирует звездочку и пропускает ее без изменения.

Возможно, вы захотите рассмотреть x для операции умножения, чтобы избежать этого.

0

Найдите значение ASCII * , используя команду ниже

printf "%d\n" "'`echo "*" | awk '{print $1}'`"

и использовать это значение для проверки состояния.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .