致电' git config'来自脚本 - 变量扩展

时间:2018-02-13 23:03:29

标签: bash git git-config

我使用以下命令配置git smudge过滤器:

git config filter.ptc.clean "foo bar baz"
git config filter.ptc.smudge "foo bar baz"

有效。

现在,我想把它放到' configure_filters.sh'脚本,我天真的方法看起来像这样:

#!/bin/bash
COMMAND="\"foo bar baz\""
git config filter.ptc.clean $COMMAND
git config filter.ptc.smudge $COMMAND

运行' configure_filters.sh'不起作用。 git config抱怨这些争论。

bash -x configure_filters.sh返回:

+ COMMAND='"foo bar baz"'
+ git config filter.ptc.smudge '"foo' bar 'baz"'
usage: git config [<options>]
...

似乎COMMAND变量并没有像我预期的那样扩展。我该如何解决?

2 个答案:

答案 0 :(得分:2)

用双引号括起你的变量,它就像你手动执行它一样。

#!/bin/bash
COMMAND="foo bar baz"
git config filter.ptc.clean "$COMMAND"
git config filter.ptc.smudge "$COMMAND"

答案 1 :(得分:1)

如果您希望将参数传递为"foo bar baz"且值包含",请使用以下内容:

#!/bin/bash
COMMAND="\"foo bar baz\""
git config filter.ptc.clean "$COMMAND"
git config filter.ptc.smudge "$COMMAND"

如果你只想传递foo bar baz而那些"已经存在,因为你认为你是从命令行运行它们然后需要它们我认为只有包裹"$COMMAND"应该像如下:

#!/bin/bash
COMMAND="foo bar baz"
git config filter.ptc.clean "$COMMAND"
git config filter.ptc.smudge "$COMMAND"