Bash 在shell脚本中使用许多相同类型的cli参数?

Bash 在shell脚本中使用许多相同类型的cli参数?,bash,shell,command-line,command-line-arguments,Bash,Shell,Command Line,Command Line Arguments,在shell脚本(可能是bash)中,我们如何获取许多相同类型的参数并将它们添加到内部数组中?例如: ./combine -f file1 -f file2 -f file3 -o output_file 我知道这个简单的问题可以通过cat和重定向单独解决。但我感兴趣的是,在bash中,我们如何将-f参数中的所有三个都放在一个数组中,这样我们就可以处理它们了 由于需求的性质,我们需要某种形式的标志,因为还有其他参数 在python这样的语言中,这相当容易,尤其是在docopt这样的库中。您可以

在shell脚本(可能是bash)中,我们如何获取许多相同类型的参数并将它们添加到内部数组中?例如:

./combine -f file1 -f file2 -f file3 -o output_file
我知道这个简单的问题可以通过cat和重定向单独解决。但我感兴趣的是,在bash中,我们如何将-f参数中的所有三个都放在一个数组中,这样我们就可以处理它们了

由于需求的性质,我们需要某种形式的标志,因为还有其他参数

在python这样的语言中,这相当容易,尤其是在docopt这样的库中。您可以根据需要指定一个数组,这样就完成了

非常感谢

您可以使用:

例如:

$ bash test.sh -f 1 -f 2 -f three -o /dev/null
List of files: "1 2 three"
Output: "/dev/null" 
所以我要做的是将每个
-f
标志的每一次出现都添加到一个数组
文件
,然后简单地打印它。至于
-o
我只是将输入保存到变量
输出中。任何其他操作都将导致getopts的stderr并退出:

$ bash test.sh -w hi
test.sh: illegal option -- w
$ echo $?
1                       
您可以使用:

例如:

$ bash test.sh -f 1 -f 2 -f three -o /dev/null
List of files: "1 2 three"
Output: "/dev/null" 
所以我要做的是将每个
-f
标志的每一次出现都添加到一个数组
文件
,然后简单地打印它。至于
-o
我只是将输入保存到变量
输出中。任何其他操作都将导致getopts的stderr并退出:

$ bash test.sh -w hi
test.sh: illegal option -- w
$ echo $?
1