我正在写一个脚本来创建一些更新日志。它查看自上一个标记以来的所有提交,并在每个提交消息前添加-
。
#!/bin/bash
tag_commits_reversed=$(git rev-list --tags --max-count=1)
tags=$(git describe --match "tag_prefix*" --abbrev=0 --tags $tag_commits_reversed)
commit_messages=$(git log $tags..@ --no-merges --pretty=format:"%s" -- . | while read line; do echo "- $line"; done)
echo $commit_messages
输出如下所示:- commit_message_1 - commit_message_2 - commit_message_3
但是,如果自上一个标记以来只有一次提交,则| while read line; do echo "- $line"; done
不会正确地将-
前置到单个提交消息。
我期望- commit_message_1
,但只得到一个空输出。
我错过了什么?
1条答案
按热度按时间u59ebvdq1#
我想这个问题可以用这个例子来解释:
其输出:
也就是说:如果输入没有以预期的结果结束(
\n
您的情况),那么read
命令的计算结果为false
,while read
循环提前结束。一个常见的解决方法是在
while
条件下检查变量的大小: