Você provavelmente deve iterar todos os argumentos e testar cada um deles, e se você está bem com um único teste para as duas coisas, você pode fazer algo como o seguinte, o que garantirá que todos os argumentos tenham apenas dígitos.-
ou letras, mas também sem decimal)
pattern='[^0-9]'
for arg; do
if [[ $arg =~ $pattern ]]; then
printf 'Unacceptable option: %s\n' "$arg"
exit 3
fi
done
se você quiser que os testes separados tenham mensagens de erro e códigos de saída diferentes, você pode fazer os que estão dentro do loop for
e testar arg
, o que fará com que cada opção de linha de comando seja