将 git log 作为多行字符串导出到变量

Gus*_*lov 4 git shell

当我执行此命令时

 git log 23237d...1a8815 --oneline --pretty=tformat:"%h %B"
Run Code Online (Sandbox Code Playgroud)

我得到类似的东西

1a88151 commit1

8a544c0 commit2

b168aa9 commit3
Run Code Online (Sandbox Code Playgroud)

但是当我想将其导出到某个变量时:

export LOG=`git log 23237d...1a8815 --oneline --pretty=tformat:"%h %B"`
Run Code Online (Sandbox Code Playgroud)

并输出它:echo $LOG,我得到这个:

1a88151 commit1 8a544c0 commit2 b168aa9 commit3
Run Code Online (Sandbox Code Playgroud)

如何进行多行导出?

Col*_*ett 9

您需要LOG在调用 echo 时引用变量的扩展:

echo "$LOG"
Run Code Online (Sandbox Code Playgroud)

这可以防止发生分词。IFS在这种情况下,您不需要修改变量。


mat*_*tch 5

Bash 使用IFS变量的内容处理输入。从文档:

内部字段分隔符 (IFS),用于在扩展后进行分词,并使用 read 内置命令将行拆分为单词。默认值为<space><tab><newline>

您可以更改的值IFS来改变行为:

IFS='' export LOG=`git log 23237d...1a8815 --oneline --pretty=tformat:"%h %B"`
Run Code Online (Sandbox Code Playgroud)