SVN的导出工作在命令行中,而不是在shell脚本中



我一直在编写一个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"

最新更新