Linux 无法正确分析shell中的多个选项
因此,我需要将多个参数(例如:list)传递给一个选项,将一个参数传递给另一个选项,并根据输入触发多个操作 例如: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
./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