Atualizar
Voltei e li toda a sua pergunta e percebi que tinha originalmente respondido a uma pergunta um pouco diferente da que você perguntou, então aqui vai:
-
Sua estrutura está bem. Analise a opção de comando no início do script.
-
Sim, você pode usar uma declaração
case, verificando com$1(veja minha resposta original abaixo), embora se você estiver planejando apenas uma única opção, você pode executar um único teste com a mesma facilidade veja minha resposta original abaixo). Para usar uma instruçãocasecom várias opções possíveis, coloque-a em um loopwhile, no formatowhile "$1" ; do case ... esac; shift; done. O comandoshiftsubstituirá$1pela próxima palavra / opção da sua linha de comando.
Resposta original
Existem várias maneiras de lidar com isso. Se esta é a única opção, ou se houver apenas alguns, você pode considerar analisá-lo manualmente. No shell-speak, todas as palavras após o comando shell são chamadas parâmetros , e cada uma é atribuída a um parâmetro posicional , no formato $n with n começando em 1. Assim, você pode realizar um teste para verificar se [[ $1 == "--nomail" ]] e agir de acordo. Essa é a maneira simples e direta para apenas uma única opção.
Para scripts de shell mais complexos com muitas opções, você pode querer usar algum tipo de comando getopts para analisar as opções para você. O shell bash inclui uma versão de getopts como um arquivo interno, e você pode aprender mais sobre isso digitando man bash na linha de comando e, em seguida (se o pager padrão estiver definido como less ) /^ *getopt .