我在 bash 脚本中执行 svn 命令时遇到错误(不是工作副本)。我想读取一个包含文件名的文件。这些文件名在脚本中得到处理。每个文件名都在单独的一行上。因为某些路径包含空格,所以脚本失败。这是脚本和文件的片段。我已经尝试了几种方法,比如转义文件中的空格,以及在变量周围使用(双引号)引号,但仍然没有成功。
脚本:
while read line<br/>
do<br/>
echo "Line = $line"<br/>
svn propset svn:needs-lock yes $line<br/>
done <$1
文件:
/tmp/svntmp/bi/tags/SCR-400/framework/customdata.xml<br/>
/tmp/svntmp/bi/tags/SCR-400/framework/model.xml<br/>
/tmp/svntmp/bi/tags/SCR-400/framework/Preferences.xml<br/>
/tmp/svntmp/bi/tags/SCR-400/framework/Repository.xml<br/>
/tmp/svntmp/bi/tags/SCR-462/standaard\\ overzichten/Standaard\\ CPI\\ \\(Cliënten\\ productie\\ intramuraal\\)/CPI017\\ ZZP\\ productie\\ per\\ client\\ per\\ OE.xml<br/>
...
输出:
...<br/>
Line = /tmp/svntmp/bi/tags/3.2.0.6/standaard\ overzichten/Standaard\ CZA\ \(Cliënten\ zorg\ algemeen\)/CZA001\ Wachtlijst\ bewoning.xml<br/>
svn: warning: '/tmp/svntmp/bi/tags/3.2.0.6/standaard\' is not under version control<br/>
svn: 'overzichten' is not a working copy<br/>
svn: 'overzichten' does not exist<br/>
...
请指教如何解决这个问题。谢谢。
问候,
约翰基斯
最佳答案
适当时使用双引号。
svn propset svn:needs-lock yes "$line"
请注意,如果您的文件确实看起来像那样,那么无论如何都会因为其他原因而阻塞。
关于linux - 使用带空格的变量执行shell命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5002846/