Para verificar se não foram fornecidos argumentos ao comando, verifique o valor da variável $#
e, em seguida,
if [ $# -eq 0 ]; then
echo "No arguments provided"
exit 1
fi
Se você quiser usar $*
( não preferível ),
if [ "$*" == "" ]; then
echo "No arguments provided"
exit 1
fi
Algumas explicações:
A segunda abordagem não é preferível porque na expansão do parâmetro posicional *
se expande para os parâmetros posicionais, a partir de um. Quando a expansão ocorre entre aspas duplas, ela se expande para uma única palavra com o valor de cada parâmetro separado pelo primeiro caractere da variável especial IFS. Isso significa que uma string é construída. Portanto, há sobrecarga extra.
Por outro lado, #
expande para o número de parâmetros posicionais.
Exemplo:
$ command param1 param2
Aqui,
O valor de $#
é 2 e o valor de $*
é string "param1 param2" (sem aspas), se o IFS não estiver definido. Porque se o IFS não estiver definido, os parâmetros são separados por espaços
Para mais detalhes man bash
e leia o tópico chamado Parâmetros especiais