通过shell变量将配置选项传递给git clone

时间:2015-07-17 08:16:00

标签: git bash shell environment-variables

我正在尝试通过bash上的环境变量将动态创建的配置选项传递给git clone

直接传递它们是有效的,但它不能通过env变量起作用:

$ git clone -c 'url.foo.insteadof=bar' git://git.cweiske.de/psist.git
... all fine

$ export PARAMS="-c 'url.foo.insteadof=bar'"; git clone $PARAMS git://git.cweiske.de/psist.git
error: invalid key: 'url.foo.insteadof

如何让git识别选项?

2 个答案:

答案 0 :(得分:2)

那是因为在第一个例子中quotes是句法的:

$ (set -o xtrace; git clone -c 'url.foo.insteadof=bar' git://invalid) 2>&1 | grep 'git clone'
+ git clone -c url.foo.insteadof=bar git://invalid

而在第二个时他们是文字:

$ (set -o xtrace; export PARAMS="-c 'url.foo.insteadof=bar'" && git clone $PARAMS git://invalid) 2>&1 | grep 'git clone'
+ git clone -c ''\''url.foo.insteadof=bar'\''' git://invalid

你可以use arrays to reliably pass arguments using variables

$ (set -o xtrace; export PARAMS=('-c' 'url.foo.insteadof=bar') && git clone "${PARAMS[@]}" git://invalid) 2>&1 | grep 'git clone'
+ git clone -c url.foo.insteadof=bar git://invalid

答案 1 :(得分:1)

您可以使用eval来正确传递参数

visibility attribute