我想在shell脚本中使用svn setprop svn:externals
命令中的变量。
路径设置为变量,并且工作正常:
LOCALPATH="/some/path"
TARGETFOLDER="folder"
svn propset svn:externals 'dir -r100 http://svn.example.com/repos/trunk' $LOCALPATH/$TARGETFOLDER/externals
但是,如果我尝试将变量用于修订号,则不起作用:
LOCALPATH="/some/path"
TARGETFOLDER="folder"
REV="100"
PROP="'dir -r$REV http://svn.example.com/repos/trunk'"
echo $PROP
svn propset svn:externals $PROP $LOCALPATH/$TARGETFOLDER/externals
PROP
变量已正确回显,但propset
不起作用。我总是收到以下错误:
svn: Cannot specify revision for setting versioned property 'svn:externals'
任何帮助都将不胜感激。
答案 0 :(得分:3)
这是在shell中转义单引号的问题。见there解释。玩弄你的案例,发现以下组合工作:
....
PROP="dir -r$REV http://.../trunk"
svn propset svn:externals ''"$PROP"'' $LOCALPATH/$TARGETFOLDER/externals
答案 1 :(得分:1)
我发现你的脚本没有任何问题。不过,我遇到了同样的问题。
如果您被此脚本屏蔽,可以考虑使用外部文件来设置您的媒体资源:
LOCALPATH="/some/path"
TARGETFOLDER="folder"
REV="100"
PROP="'dir -r$REV http://svn.example.com/repos/trunk'"
echo $PROP > svn.externals
svn propset svn:externals -F svn.externals
# rm svn.externals
注意:在调试shell脚本时,您可以使用xtrace标志而不是回显命令:
sh -x myscript.sh
它将输出每个执行的命令,前面加上+
。