我可以在bash脚本中获得一个数组作为选项参数吗?

我正在编写一个shell脚本,并希望在参数中传递多个选项。 有没有可能像使用getopts那样做?

要求示例:

./shell.sh -d db1 db2 

应该将值db1db2作为-d选项的值传递。

您可以多次使用一个选项并在数组中收集结果:

 ./shell.sh -d db1 -d db2 

码:

 while getopts "d:" opt do case ${opt} in d) dbs+=("$OPTARG");; esac done 

但是,你通过一个单一的论点,例如冒号, 或引用

 ./shell.sh -d db1:db2 ./shell.sh -d "db1 db2" 

在第一种情况下:

 while getopts d: opt; do case $opt in d) IFS=: read -a dbs <<< "$OPTARG" ;; esac done 

在第二种情况下(引用)

  d) set -f # turn off filename expansion dbs=($OPTARG) # variable is unquoted set +f;; # turn it back on