Um valor padrão é fácil de definir no Bash:
foo="${bar-default}" # Sets foo to the value of $bar if defined, "default" otherwise
foo="${bar:-default}" # Sets foo to the value of $bar if defined or empty, "default" otherwise
Para processar seus parâmetros, você pode usar um loop simples:
while true
do
case "${1-}" in
-in)
infile="${2-}"
shift 2
;;
-out)
outfile="${2-}"
shift 2
;;
*)
break
;;
esac
done
program -in "${infile-otherfile}" -out "${outfile-otherout}" "$@"
Leituras úteis:
Eu também recomendo usar getopt
, porque ele é capaz de lidar com muitos casos especiais que complicariam muito rapidamente e bagunçariam seu código ( Exemplo não trivial ).