我有一个命令,它返回一个包含环境变量的字符串:
foo="foo bar"
foo
的值应该是bar
而不是"bar"
但是我无法弄清楚如何让bash与导出这个一起玩:
$ export `echo 'foo="foo bar"'`
$ env | grep foo
foo="foo bar"
理想的行为是:
$ export foo="foo bar"
$ env | grep foo
foo=foo bar
需要引号,因为变量可以包含空格,如示例所示。
答案 0 :(得分:2)
所以你有一个字符串,如s
:
$ s='foo="bar bar"'
要在避开foo
的同时制作和导出环境变量eval
,请尝试:
$ declare -x "${s//\"/}"
我们可以验证它是否有效:
$ env | grep foo
foo=bar bar
当然,这假设变量值中没有"
。
注意:
declare
根据提供的字符串创建变量赋值。 declare -x
创建和导出变量。
${s//\"/}
从s
的值中删除所有双引号。