如何在bash上的字符串中添加符号

时间:2013-08-06 12:15:33

标签: string bash symbols

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

branch=git branch --contains 86cf181ec0df06656e57c7787866087592

输出:

branch1 branch2 branch3

下一步我正在使用命令:

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

但是参数$ branch必须从$ branch和full命令写成^ branch1 ^ branch2 ^ branch3:

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

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

2 个答案:

答案 0 :(得分: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}')

答案 1 :(得分:1)

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

branch=($(git branch --contains 86cf181ec0df06656e57c7787866087592))
list_of_commits=$(git rev-list 86cf181ec0df06656e57c7787866087592 "${branch[@]/#/^}" --first-parent | tail -n 1)