git diff的格式存储在Bash变量中时不正确

时间:2019-04-17 08:18:16

标签: bash git

我想在bash文件中进行计算

files : {
          {
             file {
                     name: "Bla,java"
                     line_changes : [45,146,14]
                  }
          } 
          {
             file {
                     name: "Foo.java"
                     line_changed : [7,8,9,10]
                  }
          }
       }

所以我有这个

gitOutput=$(git diff origin/master..origin/mybranch)
echo $gitOuput

我的问题是:

输出太糟糕了,没有格式化。

一切都在同一行

我无法对其进行逻辑分析...

类似于\ n拆分或“ diff --git”等拆分

也没有新行。 因此,如果有的话,那是没有意义的。

所以我想知道,git diff是否有漂亮的格式选项

[更新]

我尝试了这种奇怪的方法

git diff origin/master..origin/mybranch > data.txt
data=$(cat data.txt)

输出为: data.txt绝对完美 但是数据变量。都搞砸了...

与IFS有关吗?

1 个答案:

答案 0 :(得分:2)

简短的答案是:您应该添加引号:

gitOutput="$(git diff origin/master..origin/mybranch)"
echo "$gitOuput"

,以便行返回保持原样。通常,这是在shell中包含变量时通常要执行的操作。

有关使用引号的详细说明,请参见 https://unix.stackexchange.com/questions/68694/when-is-double-quoting-necessary