Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将git日志导出为多行字符串形式的变量_Git_Shell - Fatal编程技术网

将git日志导出为多行字符串形式的变量

将git日志导出为多行字符串形式的变量,git,shell,Git,Shell,当我执行这个命令时 git log 23237d...1a8815 --oneline --pretty=tformat:"%h %B" 我得到的是 1a88151 commit1 8a544c0 commit2 b168aa9 commit3 但当我想将其导出到某个变量时: export LOG=`git log 23237d...1a8815 --oneline --pretty=tformat:"%h %B"` 并输出它:echo$LOG, 我明白了: 1a88151 comm

当我执行这个命令时

 git log 23237d...1a8815 --oneline --pretty=tformat:"%h %B"
我得到的是

1a88151 commit1

8a544c0 commit2

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

export LOG=`git log 23237d...1a8815 --oneline --pretty=tformat:"%h %B"`
并输出它:
echo$LOG
, 我明白了:

1a88151 commit1 8a544c0 commit2 b168aa9 commit3

如何进行多行导出?

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

内部字段分隔符(IFS),用于在展开后进行字拆分,并使用read builtin命令将行拆分为字。 默认值为

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

IFS='' export LOG=`git log 23237d...1a8815 --oneline --pretty=tformat:"%h %B"`

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

echo "$LOG"

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

此解决方案将IFS设置为空字符串的问题在于它具有误导性。IFS=''不影响调用“git log”并将其存储在log变量中的行,而是影响
echo$log
行,并在shell会话的其余部分保持不变,在shell中尝试以下操作,注意哪些显示
y
,哪些保留换行符并输出三行
y
:(1)
IFS=”;LOG=`yes | head-n3`;取消国际单项体育联合会;echo$LOG
(2)
取消设置IFS;LOG=`yes | head-n3`;IFS=“”;echo$LOG
(3)
取消设置IFS;LOG=`yes | head-n3`;回显“$LOG”