我正在导出本地原型svn存储库的一部分以导入到不同的存储库中。我们在整个仓库中设置了许多svn属性,所以我想我会编写一个脚本来列出文件元素及其相应的属性。这有多难啊。
所以我开始写一个bash脚本,它将svn proplist -v的输出分配给一个变量,这样我就可以检查指定的文件是否有任何属性。
#!/bin/bash
o=$(svn proplist -v "$1")
echo $o
现在这样可以正常工作并回显svn proplist命令的输出。但是如果proplist命令返回类似
的内容svn:ignore : * build
它在*上执行shell扩展,并在build属性值之前插入整个目录列表。因此,如果目录中包含a.txt,b.txt和build files / dirs,则输出看起来像。
svn:ignore : a.txt b.txt build
我认为我需要以某种方式逃避输出或某些东西以防止扩展发生,但还没有找到有用的东西。还有其他方法可以做到这一点,但我讨厌当我无法解决问题。而且我必须管理员,我认为这个击败了我(考虑到我可以花费的时间),
答案 0 :(得分:2)
echo "$o"
将阻止值扩展。
答案 1 :(得分:1)
虽然它确实执行shell扩展,但它是在echo处执行的。要查看此内容,请在bash脚本中发出set -x
。这是一个例子:
#!/bin/sh
set -x
o=$(echo 'one two *')
echo $o
这是你应该看到的输出:
++ echo 'one two *'
+ o='one two *'
+ echo one two others from expansion
如果引用$o
,一切正常:
++ echo 'one two *'
+ o='one two *'
+ echo 'one two *'
one two *
您也可以尝试set -v
。