Você pode usar uma opção várias vezes e coletar resultados na matriz:
./shell.sh -d db1 -d db2
Código:
while getopts "d:" opt
do
case ${opt} in
d) dbs+=("$OPTARG");;
esac
done
Estou escrevendo um script de shell e quero passar várias opções em um argumento. É possível fazer isso como usar getopts?
Exemplo de requisito:
./shell.sh -d db1 db2
deve passar os valores db1
e db2
como valores da opção -d
.
Você pode usar uma opção várias vezes e coletar resultados na matriz:
./shell.sh -d db1 -d db2
Código:
while getopts "d:" opt
do
case ${opt} in
d) dbs+=("$OPTARG");;
esac
done
Não. Mas você passa um único argumento unido com, por exemplo, dois pontos; ou citado
./shell.sh -d db1:db2
./shell.sh -d "db1 db2"
No primeiro caso:
while getopts d: opt; do
case $opt in
d) IFS=: read -a dbs <<< "$OPTARG" ;;
esac
done
No segundo caso (citado)
d) set -f # turn off filename expansion
dbs=($OPTARG) # variable is unquoted
set +f;; # turn it back on
Tags bash shell shell-scripting