linux - Bash 将多行 Git 日志输出保存到环境变量

标签 linux bash git ubuntu

我正在尝试将 git 命令的输出保存到 GitHub Actions 步骤中的环境变量中,它正在获取输出的第一行并忽略其余部分。正在运行的容器是 ubuntu-latest .

这是我试图捕捉它的方式:

TMP_CHANGES=`git log origin/master..`

我对 echo $TMP_CHANGES 的期望:

commit f179fb811618cc5a2f07637a2ecb394a43ebee21
Author: DannyHinshaw <danny@nulleffort.com>
Date:   Tue Jan 14 07:38:29 2020 -0500
    Testing commits diff
commit ed596d2ff2e5bd9801eae6ece7abf627db89f82b
Author: DannyHinshaw <danny@nulleffort.com>
Date:   Tue Jan 14 07:38:28 2020 -0500
    Bump version -> v1.2.1-101
commit 40f88031293aba0221b65ed1d2a8295b651ef91b
Author: DannyHinshaw <danny@nulleffort.com>
Date:   Tue Jan 14 07:35:04 2020 -0500
    Testing commits diff

我得到什么:

commit f179fb811618cc5a2f07637a2ecb394a43ebee21

我错过了什么?如何在保留多行格式的同时捕获完整的多行输出并将其保存到变量?

最佳答案

在 Ubuntu 18.04.3 LTS 上测试

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.3 LTS
Release:    18.04
Codename:   bionic

$ git --version
git version 2.17.1

获取日志
GT=$(git log -n3 origin/master..)

不带“”的 echo
$ echo $GT
commit c7c1d60c01b23ba225d79d350d74d0f8990ea8df Author: Ivan <user@pisem.net> Date: Tue Jan 14 16:05:16 2020 +0300 ref test2 commit 7a52ab307dd6eb2c88cdee83d40dbf2f2ed8c218 Author: Ivan <user@pisem.net> Date: Tue Jan 14 15:47:16 2020 +0300 ref test2 commit 8f0a2c081a4e731b676c95991d9b182fadd71a95 Author: Ivan <user@pisem.net> Date: Tue Jan 14 12:45:13 2020 +0300 add more test files

用“” echo
$ echo "$GT"
commit c7c1d60c01b23ba225d79d350d74d0f8990ea8df
Author: Ivan <user@pisem.net>
Date:   Tue Jan 14 16:05:16 2020 +0300

    ref test2

commit 7a52ab307dd6eb2c88cdee83d40dbf2f2ed8c218
Author: Ivan <user@pisem.net>
Date:   Tue Jan 14 15:47:16 2020 +0300

    ref test2

commit 8f0a2c081a4e731b676c95991d9b182fadd71a95
Author: Ivan <user@pisem.net>
Date:   Tue Jan 14 12:45:13 2020 +0300

    add more test files

关于linux - Bash 将多行 Git 日志输出保存到环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59734240/

相关文章:

linux - 我如何更改 debian 中的优先级?

linux - 如何计算所服务的http请求的质量

linux - 在 Bash 中打印文件,跳过前 X 行

linux - 如何在本地更改子模块远程 url 必须提交这些更改

git - mingw64 shell perl CPAN 不适用于任何模块

Git: merge 公共(public)和私有(private)分支,同时在两个分支中保持某些文件完好无损

android - Linux 到 Android 蓝牙网络共享 (PAN)

linux - cron 作业用于在 linux 中运行 hadoop 程序

bash - 如何知道在使用Shell时在vi中打开文件?

linux - 为 openssh 使用 pam_exec 的帐户的外部脚本