Você precisa escapar ou citar o asterisco na linha de comando:
./calculator.sh 2 \* 2
./calculator.sh 2 '*' 2
e coloque o $2
entre aspas duplas:
if [ "$2" == "*" ]
Estou fazendo um script básico para fazer artrite básica e quando faço:
if [ $2 == "*" ]
não funciona.
Como posso verificar o asterisco?
O problema não é que a instrução if
não esteja funcionando, é que o asterisco na linha de comando está sendo .
Então, se o seu script foi chamado de mycalc
e executado a partir da linha de comando, você faz
mycalc 2 * 3
O *
será globbed e convertido em todos os nomes dos arquivos na pasta atual.
Para evitar a expansão, você precisa fazer
mycalc 2 \* 3
O \
escapa do asterisco e passa sem alterá-lo.
Você pode querer considerar x
para a operação de multiplicação para evitar isso.
Encontre o valor ASCII de *
usando o comando abaixo
printf "%d\n" "''echo "*" | awk '{print $1}''"
e use esse valor para a verificação de condições.
Tags bash linux shell-script