2014-07-22 57 views
1

我一直在研究一个shell脚本,它通过从svn中检查文件并调用Jar来执行一些部署任务。我一直在使用一个测试SVN网址没有问题的发展。我现在需要测试标签部署,突然svn给我的问题,当我尝试使用输入建立网址。svn导出在命令行上工作,但不在shell脚本中

我建立这样的网址:

svnurl=$(echo ${template//[# ]/}) 
    svnurl=$(svn://0.0.0.1/models/tags/"$tag"/"$svnurl") 
    urls=("${urls[@]}" $svnurl) 

这是唯一的工作代码稍有不同:

svnurl=$(echo ${template//[# ]/}) 
    urls=("${urls[@]}" $svnurl) 
    svn export "$svnurl" 

(基本上这是我在IP和标签目录出来的url -模板)。

现在,当我尝试运行我的shell,而不是让“出口完成”,我得到如下:

./deploy-files.sh: line 36: svn://0.0.0.1/models/tags/201407221642/ResponseA.xsl: No such file or directory 
svn: '.' is not a working copy 

当我运行在终端的文件导出正确svn export svn://0.0.0.1/models/tags/201407221642/ResponseA.xsl。我检查过,网址相同。我无法再现'。'无论我尝试什么,都会出现工作副本错误。

注:svn export -q svn://0.0.0.1/models/tags/"$tag"/deploy-filelist.yml在脚本中使用较早且正常工作

什么可能的原因是什么?

感谢

编辑在SVN的网址是如何建立

urls=() 
IFS=$'\n' yaml=($(cat deploy-filelist.yml)) 
for u in "${yaml[@]}"; do 
    if [[ $u =~ url.* ]] 
    then 
     template=$(echo $u | sed -e 's/url://g' -e 's/"//' -e 's/"$//') 
     svnurl=$(echo ${template//[# ]/}) 
     svnurl=$(svn://0.0.0.1/models/tags/"$tag"/"$svnurl") 
     urls=("${urls[@]}" $svnurl) 
     svn checkout "$svnurl" 
    fi 
done 

,我读了部署,filelist.yml每行

更多信息。如果该行包含“url”,我剪出所需的字符串并将其添加到模板'svn:// ....'部分。网址形成正确,因为我可以复制错误消息并使用它来导出文件。

+0

你能提供足够的信息(比如如何使用'$ {//模板[#] /}' ),这样任何人都可以尝试重现这一点? –

回答

3

在这一行:

svnurl=$(svn://0.0.0.1/models/tags/"$tag"/"$svnurl") 

您要执行字符串,因此“没有这样的文件或目录”错误。

你可能想值分配给字符串:

svnurl=svn://0.0.0.1/models/tags/"$tag"/"$svnurl" 

svnurl="svn://0.0.0.1/models/tags/$tag/$svnurl" 
相关问题