0

我有一个带有一行的 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 操作系统

4

3 回答 3

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
于 2012-10-01T14:26:50.053 回答
0

尝试类似:

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

打印整行。

于 2012-10-01T14:13:13.333 回答
0

再次进行一些研发后,我发现它不是 awk工具,而是for循环错误,默认情况下,它根据IFS变量 value 标记字符串,默认为空格。即使 awk 返回整个字符串 for 循环也会根据IFS进行拆分。所以我在 Mac OS 上的工作解决方案是:

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

我仍然不知道为什么它在不设置IFS的情况下在 linux 下工作而不是在 MAC OS 上工作

于 2012-10-02T13:00:14.640 回答