所以我需要将多个参数(例如:list)传递给一个选项,而仅将一个参数传递给另一选项,并根据输入触发多个动作
例如:
./scriptname -a <List of strings> -b one parameter
但是整个字符串都被解析为 -a -b one_parameter 引发错误。
我正在使用getopts
方法,而-b
没有被识别为单独的选项。
while getopts "a:b:" OPTION
do
case $OPTION in
a) shift
function_a $@
;;
b) shift
function_b $@
;;
esac
done
因此-a
应该接受一些命令并触发function_a
,而对于-b
也是如此。
答案 0 :(得分:0)
赞:
#!/bin/bash
# This function prints the arguments passed to it
foo() {
while [ $# -gt 0 ] ; do
echo "-> ${1}"
shift
done
}
while getopts "a:b:" option
do
echo "${option}"
case ${option} in
a)
foo ${OPTARG} # <-- no quotes
;;
b)
foo "${OPTARG}" # <-- quotes
;;
esac
done
然后确保在调用脚本时引用字符串列表:
./scriptname -a "foo bar baz" -b "hello world"
a
-> foo
-> bar
-> baz
b
-> hello world