原始命令如下:
git clone -c http.proxy="192.168.1.123:8888" https://github.com/zephir-lang/zephir.git
这个是没有问题的,现在我希望使用变量替换使用代理的那一块,于是乎我把命令改成这样了:
git clone ${poxystr} https://github.com/zephir-lang/zephir.git
完整过程如下:
yhm@:~$ echo ${poxystr}
yhm@:~$ poxystr='-c http.proxy="192.168.1.123:8888"'
yhm@:~$ echo ${poxystr}
-c http.proxy="192.168.3.114:8893"
yhm@:~$ git clone ${poxystr} https://github.com/zephir-lang/zephir.git
正克隆到 'zephir'...
fatal: 无法访问 'https://github.com/zephir-lang/zephir.git/':Unsupported proxy syntax in '"192.168.1.123:8888"'
结果就像上面那样报错了,请问如何实现这种功能呢?跪求大神指点。
poxystr='-c http.proxy=192.168.1.123:8888'
去掉双引号
bash 在 word splitting (用空格把输入切开)之后,会去掉所有的(非转义的)引号,但是通过变量扩展出来的内容是不处理的。
所以对
-c http.proxy="..."
会变成-c http.proxy=...
。但是当它是用一个变量替换出来的内容的时候,就不会有这个变化了。