将bash变量传递给git formatter

时间:2016-06-13 19:35:48

标签: bash

我想将保存在bash变量中的整数传递给git show --format,我该怎么做呢? 当我传递变量时,git formatter将其视为文字并且不检索其值,而是打印出变量的名称。
我编写了一个脚本来进行一些处理,但为了简洁起见,我将粘贴脚本的相关部分:

git show -s --format='%C(yellow)commit %H%C(reset) %C(magenta bold)(commit message lines: $lines)%C(reset)%n%B' $i

目前,它输出的内容如下:

commit 6fc73ae81627edf220d3005eafbdd3d7f5f898d7 (commit message lines: $lines)
Fix foo

Fixing foo consisted of:
- Fixing bar
- Fixing baz

我希望它输出的是:

commit 6fc73ae81627edf220d3005eafbdd3d7f5f898d7 (commit message lines: 5)
Fix foo

Fixing foo consisted of:
- Fixing bar
- Fixing baz

2 个答案:

答案 0 :(得分:1)

你可以打破单引号,附加你的变量,然后恢复单引号。只要两者之间没有空格,shell就会将其视为单个值(参见word splitting):

Customer.findAll(...)

答案 1 :(得分:1)

对于这种特殊情况,使用双引号而不是单引号引用格式字符串是安全的:

git show -s --format="%C(yellow)commit %H%C(reset) %C(magenta bold)(commit message lines: $lines)%C(reset)%n%B" $i

在双引号内,shell执行变量扩展,在单引号内不执行:

> echo "HOME=$HOME"
HOME=/home/leon
> echo 'HOME=$HOME'
HOME=$HOME