2013-03-04 51 views
1

多個參數我想要做的是一樣的東西擊:對每個標誌

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

$ ./my-script -a *.txt -d src1/*.tex sr2/*.tex 

然而,似乎只有getopts的支持每標誌零個或一個參數。

有沒有一種很好的方法來處理這個要求?我目前正在通過自己分析的說法..

回答

1

指定一個逗號分隔(或其他一些delimter)參數爲每個選項:

$ ./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主要。

+0

我想使用這樣的腳本:./my-script -a * .tex -d * .pdf,這是不方便添加像你建議的分隔符.. – zzk 2013-03-04 20:29:28

+0

我想這是妥協使如果我不想手動解析... – zzk 2013-03-04 21:01:48

+0

您可以讓通配符在腳本中擴展而不是在命令行上發生。 – William 2013-03-04 22:16:44