svn exports在命令行上工作,但在shell脚本中没有

时间:2014-07-22 16:12:24

标签: linux bash shell svn svn-export

我一直在研究一个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"

(基本上我是从url-template中取出IP和tag目录)。

现在,当我尝试运行我的shell时,而不是让#34;导出完成" ,我得到以下内容:

./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

我从deploy-filelist.yml读取每一行。如果该行包含" url"我删除了所需的字符串并将其添加到模板' svn://....'部分。 url正确形成,因为我可以复制错误消息并使用它来导出文件。

1 个答案:

答案 0 :(得分:3)

在这一行:

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

您正在尝试执行该字符串,因此“没有此类文件或目录”错误。

您可能希望将值分配给string:

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

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