我想做的是
$ ./my-script -a file1 file2 file3 -d file4 file5 file6 -r file7 file8
或者
$ ./my-script -a *.txt -d src1/*.tex sr2/*.tex
但是,似乎 getopts 每个标志只支持零个或一个参数。
有没有很好的方法来处理这个要求?我目前正在自己解析论点..
我想做的是
$ ./my-script -a file1 file2 file3 -d file4 file5 file6 -r file7 file8
或者
$ ./my-script -a *.txt -d src1/*.tex sr2/*.tex
但是,似乎 getopts 每个标志只支持零个或一个参数。
有没有很好的方法来处理这个要求?我目前正在自己解析论点..
为每个选项指定一个逗号分隔(或其他分隔符)参数:
$ ./my-script -a file1,file2,file3 -d file4,file5,file6 -r file7,file8
然后在解析选项后拆分各个参数。一种方法:
IFS=, read a1 a2 a3 <<< $a_argument
或者
IFS=, read -a a <<< $a_argument
另一种选择是引用参数,并让脚本进行扩展:
./my-script -a '*.tex' -d '*.pdf'
$ ./my-script -a '*.txt' -d 'src1/*.tex sr2/*.tex'
在脚本中的位置:
#!/bin/bash
as=( $a_argument )
ds=( $d_argument )
这类似于如何find
处理,例如,-name
主要的。