Posso obter uma matriz como um argumento de opção no script bash

4

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 .

    
por Ramesh Kumar 23.03.2015 / 11:35

2 respostas

4

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
    
por 23.03.2015 / 11:58
0

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
    
por 23.03.2015 / 11:42