Linux 无法正确分析shell中的多个选项

Linux 无法正确分析shell中的多个选项,linux,shell,Linux,Shell,因此,我需要将多个参数(例如:list)传递给一个选项,将一个参数传递给另一个选项,并根据输入触发多个操作 例如: ./scriptname -a <List of strings> -b one parameter 因此-a应该接受一些命令并触发功能\u a,这同样适用于-b,如下所示: #!/bin/bash # This function prints the arguments passed to it foo() { while [ $# -gt 0 ] ; d

因此,我需要将多个参数(例如:list)传递给一个选项,将一个参数传递给另一个选项,并根据输入触发多个操作

例如:

./scriptname -a <List of strings> -b one parameter
因此
-a
应该接受一些命令并触发
功能\u a
,这同样适用于
-b

,如下所示:

#!/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
像这样:

#!/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

对不起,打错了。means-我认为您需要重新阅读有关
getopts
的Shell文档,特别是
在optstring中的含义以及如何处理选项的参数。很抱歉输入错误。means-我认为您需要重新阅读有关
getopts
的shell文档,特别是
在optstring中的含义以及如何处理选项的参数。是的,非常感谢。我也想出了同样的办法。但是,由于我不熟悉shell脚本,我仍然有一个新问题,即查找是否同时调用了两个标志,并根据这两个标志执行操作,您可以在每次传递这些标志时增加一个数字。如果在getopts循环后数字等于2,则两个标志都已传递。谢谢。我在我的案子中使用了一个全局标志来触发基于getopts的呼叫是的,非常感谢。我也想出了同样的办法。但是,由于我不熟悉shell脚本,我仍然有一个新问题,即查找是否同时调用了两个标志,并根据这两个标志执行操作,您可以在每次传递这些标志时增加一个数字。如果在getopts循环后数字等于2,则两个标志都已传递。谢谢。我在我的案例中使用了一个全局标志来触发基于getopts的调用
./scriptname -a "foo bar baz" -b "hello world"
a
-> foo
-> bar
-> baz
b
-> hello world