我正在尝试检索存储库中所有分支的svn url。我使用简单的bash脚本得到了结果。 我可以使用" xargs" 。我没有抓住xargs命令。
我试过这样的事情
svn ls https://my.svn.net/svn/projectA/branches | xargs -0 -I {} svn info {}\ ;
仅打印svn ls的结果。
任何想法?
修改
输出svn ls
svn ls https://my.svn.net/svn/projectA/branches
branch1
branch2
branch3
branch4
使用xargs时的预期输出
https://my.svn.net/svn/projectA/branches/branch1
https://my.svn.net/svn/projectA/branches/branch2
...
...
答案 0 :(得分:2)
您只需从-0
中删除xargs
标记,该标记用于读取NULL
非限制输出,只需执行
svn ls https://my.svn.net/svn/projectA/branches | xargs -I {} svn info "{}"
此处,svn ls ..
的输出管道为xargs
,并存储在{}
中,作为收到值的占位符,然后svn info
为要求每个分支机构提供您想要的信息。请注意{}
周围的双引号,以防止svn ls
的输出由shell完成Word-Splitting。
从man
的{{1}}页面引用,
-0, - null
输入项由 null字符而不是空格 终止,引号和反斜杠不是特殊的(每个字符都是字面意思)。禁用文件字符串的结尾, 这与任何其他论点一样对待。输入项可能包含空格,引号或反斜杠时很有用。 GNU find -print0 选项产生适合此模式的输入。
从评论中看起来好像你想要追加xargs
每个分支名称,你可以这样做
URL
与当前答案无关。此外,如果您使用svn ls https://my.svn.net/svn/projectA/branches | \
xargs -I {} svn info "https://my.svn.net/svn/projectA/{}"
,则可以使用其GNU xargs
标志来确保命令未在管道的空输入上运行。
-r
xargs -r -I {} svn info "https://my.svn.net/svn/projectA/{}"
页面参考,
-r, - no-run-if-empty
如果标准输入不包含任何非空白,请不要运行该命令。通常,即使没有输入,命令也会运行一次。此选项是 GNU扩展。