Por que seu script não funciona
Seu script como está agora executa a expansão de curingas para substituir o caractere curinga por todos os arquivos em seu diretório de trabalho atual. Isso fica evidente se você adicionar a opção set -x
ao topo do script.
$ ./expr_script.sh 2 '*' 2
+ args='2 * 2'
++ expr 2 -23.txt add_location_name.py expr_script.sh kusalananda 'Movie A (2014)' 'Movie B (2016)' one.test popup_script.sh somefile2.txt somefile.txt somethings texts three.test turnSignal.v two.test 2
expr: syntax error
+ result=
+ echo '2 * 2 = '
2 * 2 =
Como corrigir isso
Você não precisará da expansão de nome de arquivo no script aritmético, portanto, desabilite a expansão glob com a opção set -f
.
#!/bin/bash
set -f
##set -x
args="$@" # the first line of the script
result=$(expr $args)
echo "$args = $result"
Isso funciona:
$ ./expr_script.sh 2 '*' 2
2 * 2 = 4