我想编写一个 POSIX shell ( /bin/sh
),它将输入分支名称。这些分支是发布分支,它们的格式为release/yymmDD-HHMMSS
,例如release/240321-170138
,/release/240405-095914
。Agit branch -A | grep release
为我找到了所有这些:
origin/release/230823-184353
origin/release/230825-154255
origin/release/230829-112434
origin/release/230905-101013
origin/release/230913-114212
origin/release/230915-105323
origin/release/230920-115230
origin/release/230927-115028
origin/release/230927-125843
origin/release/231016-145729
origin/release/231019-110314
origin/release/231030-150735
origin/release/231102-125814
origin/release/231109-114532
origin/release/231122-120112
origin/release/231123-140553
origin/release/231204-143206
origin/release/231213-153646
origin/release/231229-123237
origin/release/240112-160116
origin/release/240123-093125
origin/release/240201-171058
origin/release/240209-140214
origin/release/240216-121012
origin/release/240222-134817
origin/release/240307-115055
origin/release/240320-111003
origin/release/240321-170138
origin/release/240405-095914
现在假设我的脚本已被赋予分支名称release/240216-121012
。我希望以列表或数组的形式(不确定 POSIX shell 中正确的术语是什么)接收按时间顺序遵循此分支名称的所有分支,在本例中这也意味着按字典顺序,至少到 2099 年:
origin/release/240222-134817
origin/release/240307-115055
origin/release/240320-111003
origin/release/240321-170138
origin/release/240405-095914
什么是快速而优雅的方法来做到这一点?我目前设想将所有这些结果放入一个数组中,然后从末尾向后循环,直到遇到我想要的分支。也许用awk
orsed
和xargs
可以解决这个问题?