linux 命令行如何使用变量?

原始命令如下:

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"'

结果就像上面那样报错了,请问如何实现这种功能呢?跪求大神指点。

阅读 1.8k
1 个回答

poxystr='-c http.proxy=192.168.1.123:8888'

去掉双引号


bash 在 word splitting (用空格把输入切开)之后,会去掉所有的(非转义的)引号,但是通过变量扩展出来的内容是不处理的。

所以对 -c http.proxy="..." 会变成 -c http.proxy=... 。但是当它是用一个变量替换出来的内容的时候,就不会有这个变化了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏