2011-02-15 149 views
0

在bash脚本中执行svn命令时出现错误(不是工作副本)。我想读取包含文件名的文件。这些文件名在脚本中得到处理。每个文件名都在一个单独的行上。由于某些路径包含空格,因此脚本失败。以下是脚本和文件的片段。我已经尝试了一些东西,比如转义文件中的空格,并在变量周围使用(复制)引号,但仍然没有运气。执行带有空格的变量的shell命令

脚本:
while read line
do
echo "Line = $line"
svn propset svn:needs-lock yes $line
done <$1

文件:
/tmp/svntmp/bi/tags/SCR-400/framework/customdata.xml
/tmp/svntmp/bi/tags/SCR-400/framework/model.xml
/tmp/svntmp/bi/tags/SCR-400/framework/Preferences.xml
/tmp/svntmp/bi/tags/SCR-400/framework/Repository.xml
/tmp/svntmp/bi/tags/SCR-462/standaard\\ overzichten/Standaard\\ CPI\\ \\(Cliënten\\ productie\\ intramuraal\\)/CPI017\\ ZZP\\ productie\\ per\\ client\\ per\\ OE.xml
...

输出:
...
Line = /tmp/svntmp/bi/tags/3.2.0.6/standaard\ overzichten/Standaard\ CZA\ \(Cliënten\ zorg\ algemeen\)/CZA001\ Wachtlijst\ bewoning.xml
svn: warning: '/tmp/svntmp/bi/tags/3.2.0.6/standaard\' is not under version control
svn: 'overzichten' is not a working copy
svn: 'overzichten' does not exist
...

请就如何解决这一建议。谢谢。

问候,

约翰 - 基斯

回答

1

使用双引号在适当的时候。

svn propset svn:needs-lock yes "$line" 

请注意,如果你的文件确实看起来像那么这将不分呛,其他原因。

+0

我试过配音引号,但还是没有运气。你还有什么其他原因? – JohanKees 2011-02-15 11:19:16