svn diff总结和带空格问题的awk文件名

时间:2012-10-01 13:51:34

标签: bash svn

我有一个带有一行的bash脚本:

for i in $(svn diff --summarize $REPO$OLD $REPO$NEW |awk '{print $0}'); 
 do
 print $i

输出:

A
https://domainname.com/projectxyz/uploads/Screen
shot
2012-05-08
at
1.57.50
PM.png

我需要的是单行字符串,如下所示:

"Ahttps://domainname.com/projectxyz/uploads/Screen shot 2012-05-08 at 1.57.50 PM.png"

注意:使用MAC OS

3 个答案:

答案 0 :(得分:1)

尝试在子shell中添加引号,如下所示:

for i in "$(svn diff --summarize $REPO$OLD $REPO$NEW |awk '{print $0}')"
do
    echo $i
done

编辑:

你能试试这个方法吗?

svn diff --summarize $REPOS@OLDREV $REPOS@NEWREV |
    while read line
    do
        echo $line
    done

答案 1 :(得分:0)

尝试类似:

for i in $(svn diff --summarize $REPO$OLD $REPO$NEW |awk '{print }'); 
 do
 print $i

打印整行。

答案 2 :(得分:0)

再次做了一些R& D之后,我发现它不是 awk 工具,而是 for 循环错误,默认情况下基于 IFS标记字符串变量值,默认为空格。即使awk返回整个字符串for循环,也会根据 IFS 进行拆分。因此,我在Mac OS上运行的解决方案是:

IFS=$'\n'
for i in $(svn diff --summarize $REPO$OLD $REPO$NEW |awk '{print $0}'); 
 do
 print $i

我仍然不知道为什么它在linux下工作但在没有设置 IFS

的MAC OS上工作