1

在 bash 脚本中,我正在使用命令:

branch=git branch --contains 86cf181ec0df06656e57c7787866087592

输出:

branch1 branch2 branch3

在下一步中,我正在使用命令:

list_of_commits=$(git rev-list 86cf181ec0df06656e57c7787866087592 $branch --first-parent | tail -n 1)

但参数 $branch 必须写成 ^branch1 ^branch2 ^branch3 从 $branch 和完整的命令:

list_of_commits=$(git rev-list 86cf181ec0df06656e57c7787866087592 ^branch1 ^branch2 ^branch3 --first-parent | tail -n 1)

如何在脚本中的参数 $branch 中的每个输出单词之前添加符号 ^?

4

2 回答 2

1

只需遍历记录并在前面添加^

$ d="hello i am muzzy"
$ echo "$d" | awk '{for (i=1;i<=NF; i++) {$i="^"$i} print}'
^hello ^i ^am ^muzzy

同样awk '{for (i=1;i<=NF; i++) $i="^"$i}1' <<< "$d"利用1, 触发完整记录的打印,并使用here-strings

或者如果你想将它保存在一个新的 var 中:

$ new_d=$(echo "$d" | awk '{for (i=1;i<=NF; i++) {$i="^"$i} print}')
$ echo "$new_d"
^hello ^i ^am ^muzzy

在你的情况下,

branch=$(echo "$branch" | awk '{for (i=1;i<=NF; i++) {$i="^"$i} print}')
于 2013-08-06T12:20:20.040 回答
1

您可以改用具有特殊参数扩展的数组:

branch=($(git branch --contains 86cf181ec0df06656e57c7787866087592))
list_of_commits=$(git rev-list 86cf181ec0df06656e57c7787866087592 "${branch[@]/#/^}" --first-parent | tail -n 1)
于 2013-08-06T12:21:50.420 回答