2013-05-13 196 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