Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过shell变量将配置选项传递给git clone_Git_Bash_Shell_Environment Variables - Fatal编程技术网

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

通过shell变量将配置选项传递给git clone,git,bash,shell,environment-variables,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: i

我试图通过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识别这些选项呢?

这是因为在第一个示例中,这些选项是语法的:

$ (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
你可以:


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

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