我一直在编写一个shell脚本,该脚本通过从svn检出文件并调用Jar来执行一些部署任务。我一直在使用测试SVN url没有问题的发展。我现在需要测试标签部署,当我尝试使用输入构建url时,svn突然给了我问题。
我正在像这样构建url:
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时,不是得到"export complete",而是得到以下内容:
./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
时,文件导出正确。我检查过了,url是一样的。我不能复制。' '是一个工作的复制错误,无论我做什么。
注意:svn export -q svn://0.0.0.1/models/tags/"$tag"/deploy-filelist.yml
在脚本的前面使用,并且工作良好
原因是什么?
感谢编辑
关于如何构建SVN url的更多信息
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
我从deploy-filelist.yml中读取每一行。如果该行包含"url",则将所需的字符串剪掉并将其添加到模板'svn://....的一部分。url的格式是正确的,因为我可以复制错误消息并使用它来导出文件。
这一行:
svnurl=$(svn://0.0.0.1/models/tags/"$tag"/"$svnurl")
您正在尝试执行字符串,因此出现"No such file or directory"错误。
你可能想把值赋给string:
svnurl=svn://0.0.0.1/models/tags/"$tag"/"$svnurl"
或
svnurl="svn://0.0.0.1/models/tags/$tag/$svnurl"