3

我是 linux 的新手,尤其是 bash 脚本。

基本上我想做的是(在一些混合的bash /伪代码中)

for entry in `svn list https://svn.xxx.../projects`
  if already checked out
  then
    svn up https://svn.xxx.../projects/$entry some/local/path
  else 
    svn co https://svn.xxx.../projects/$entry some/local/path
  fi

  ... other stuff ...
done

我的问题是不幸的是,我们的一些项目名称中包含空格。我设法对“入口”部分进行了一些组装,但是在执行颠覆命令时,url中的空格被转义了。例如

svn co "https://svn.xxx.../projects/$myassembly" some/local/path

变成

svn co https://svn.xxx.../projects/Project%20With%20Space some/local/path

并且找不到该网址。

我将不胜感激有关如何解决此问题的任何帮助。谢谢

4

1 回答 1

1

使用while循环而不是for循环并在变量展开的地方加上引号。使用重定向whiledone.

while read -r entry
do
  if already checked out
  then
    svn up "https://svn.xxx.../projects/$entry" some/local/path
  else 
    svn co "https://svn.xxx.../projects/$entry" some/local/path
  fi

  ... other stuff ...
done < <(svn list https://svn.xxx.../projects)
于 2012-05-25T11:11:41.000 回答