我使用以下命令配置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
变量并没有像我预期的那样扩展。我该如何解决?
答案 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"