我正在编写一个shell脚本,并希望在参数中传递多个选项。 有没有可能像使用getopts那样做?
要求示例:
./shell.sh -d db1 db2
应该将值db1和db2作为-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