2013-05-13 193 views
0

現在我有一個工作腳本將2個參數傳遞給shell腳本。該腳本基本上在命令行上將#票號和svn URL作爲參數,並給出了與該票#相關的所有修改的輸出(在svn註釋中)。如何在shell腳本中傳遞參數數組?

#!/bin/sh 

jira_ticket=$1 
src_url=$2 


revs=(`svn log $2 --stop-on-copy | grep -B 2 $1 | grep "^r" | cut -d"r" -f2 | cut -d" " -f1| sort`) 

for revisions in ${!revs[*]} 
    do 
    printf "%s %s\n" ${revs[$revisions]} 
done 

輸出:

4738 
4739 
4743 
4744 
4745 

我需要一些幫助來傳遞參數數組 - 這意味着超過一個#,並給予與獲得儘可能ARGS傳遞給那些票號的相關修訂版本的輸出劇本。

回答

0

我不認爲POSIX外殼有數組,所以要平原和使用#!/bin/bash

我把URL作爲第一個參數,而所有的重置均門票

#!/bin/bash 
revs=() 
src_url=$1 
svn_log=$(svn log "$src_url" --stop-on-copy) 
shift 
for jira_ticket in "[email protected]"; do 
    revs+=($(grep -B 2 "$jira_ticket" <<< "$svn_log" | grep "^r" | cut -d"r" -f2 | cut -d" " -f1)) 
done 
for revisions in $(printf "%s\n" "${!revs[@]}" | sort) 
    do 
    printf "%s %s\n" ${revs[$revisions]} 
done 
+0

1 /什麼是$ 1和$ 2在這裏? 2 /如果第三個參數需要像$ target_url那樣傳遞,該怎麼辦? – iaav 2013-05-14 14:08:30

+0

@iaav,我通過回答一些更新來更正從粘貼代碼中的錯誤。它應該更清楚。而且,它只調用一次'svn log',所以優化了一下。 – 2013-05-14 16:35:27

+0

我懷疑我沒有回答你真正的問題:請發佈'svn log'的輸出 – 2013-05-14 16:41:52