Bash:每个标志有多个参数

Bash:每个标志有多个参数,bash,command-line-arguments,getopts,Bash,Command Line Arguments,Getopts,我想做的是 $ ./my-script -a file1 file2 file3 -d file4 file5 file6 -r file7 file8 或 然而,getopts似乎只支持每个标志零个或一个参数 有没有一个好的方法来处理这个要求?我目前正在自己分析该参数。为每个选项指定一个逗号分隔的(或其他一些delimter)参数: $ ./my-script -a file1,file2,file3 -d file4,file5,file6 -r file7,file8 然后在解析选项后

我想做的是

$ ./my-script -a file1 file2 file3 -d file4 file5 file6 -r file7 file8

然而,getopts似乎只支持每个标志零个或一个参数


有没有一个好的方法来处理这个要求?我目前正在自己分析该参数。

为每个选项指定一个逗号分隔的(或其他一些delimter)参数:

$ ./my-script -a file1,file2,file3 -d file4,file5,file6 -r file7,file8
然后在解析选项后拆分各个参数。一种方法是:

IFS=, read a1 a2 a3 <<< $a_argument
脚本中的位置:

#!/bin/bash

as=( $a_argument )
ds=( $d_argument )

这类似于
find
处理的方式,例如
-name
主参数。

为每个选项指定一个逗号分隔的(或某些其他delimter)参数:

$ ./my-script -a file1,file2,file3 -d file4,file5,file6 -r file7,file8
然后在解析选项后拆分各个参数。一种方法是:

IFS=, read a1 a2 a3 <<< $a_argument
脚本中的位置:

#!/bin/bash

as=( $a_argument )
ds=( $d_argument )

这类似于
find
处理的方式,例如
-name
primary。

我想这样使用脚本:./myscript-a*.tex-d*.pdf,像你建议的那样添加delimter是不方便的。你可以让通配符在脚本中展开,而不是在命令行上展开。@William,您可能正在查看我答案的过时缓存副本;这就是我之前建议的。情况似乎就是这样。我想使用这样的脚本:./myscript-a*.tex-d*.pdf,像你建议的那样添加delimters是不方便的。你可以让通配符在脚本中展开,而不是在命令行上展开。@William,您可能正在查看我答案的过时缓存副本;这是我早些时候建议的。情况似乎就是这样。