Se você está bem com os argumentos opcionais no final, você pode fazer isso:
foo=$1
bar=$2
baz=${3:-default value}
Isso armazenará os dois primeiros argumentos em $foo
e $bar
. Se um terceiro argumento foi fornecido, ele será armazenado em $baz
; caso contrário, será padronizado como default value
. Você também pode apenas verificar se a terceira variável está vazia:
if [ -z "$3" ]; then
# Code for the case that the user didn't pass a third argument
fi
Se você quiser os padrões no início, a maneira mais fácil é provavelmente verificar o número de argumentos passados para o script, que é armazenado em $#
. Por exemplo:
case $# in
2)
# Put commands here for when the user passes two arguments
# Could just be setting variables like above, or anything else you need
;;
3)
# Put commands here for when the user passes three arguments
;;
*)
echo "Wrong number of arguments passed"
exit 1;;
esac
A ativação de $#
funcionará bem em ambos os casos, se você quiser verificar o erro. Se o seu script usa argumentos no estilo getopt como o exemplo cut
, você pode usar isso; consulte esta pergunta sobre estouro de pilha para obter mais informações