我一直在研究一个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:// ....'部分。网址形成正确,因为我可以复制错误消息并使用它来导出文件。
你能提供足够的信息(比如如何使用'$ {//模板[#] /}' ),这样任何人都可以尝试重现这一点? –