我一直在研究Shell脚本,该脚本通过从svn中检出文件并调用Jar来执行一些部署任务。我一直在使用没有问题的测试SVN网址进行开发。现在,我需要测试Tag部署,当我尝试使用输入构建url时,svn突然给我带来了问题。
我正在建立这样的网址:
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 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:// ....”部分。网址格式正确,因为我可以复制错误消息并使用它来导出文件。
在这一行:
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"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句