linux - svn 导出在命令行上工作,但在 shell 脚本中不工作

标签 linux bash shell svn svn-export

我一直在研究一个 shell 脚本,它通过从 svn check out 文件并调用 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"

(基本上我是从 url 模板中取出 IP 和标签目录)。

现在,当我尝试运行我的 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://....”部分。 url 格式正确,因为我可以复制错误消息并使用它导出文件。

最佳答案

在这一行中:

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"

关于linux - svn 导出在命令行上工作,但在 shell 脚本中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24892510/

相关文章:

linux - SSH : how to assign specifics directories to each user?

linux - 更改 vim 快捷方式

java - 运行 bash 脚本以执行 Java 代码时,日志输出显示在 Jenkins 中

java - 程序或包 gcjh 在哪里?

Bash 复合条件,带通配符和文件存在检查

java - 如何通过从java给出变量来在bash脚本中执行git命令?

android - 将android-sdk目录移动到/home分区?

bash - 将 awk 结果存储在 bash 脚本的变量中

arrays - 在 Bash 中将以空格分隔的字符串读入数组

linux - 使用 linux shell 脚本制作形状