从命令结果中导出引用变量

时间:2017-10-10 05:50:23

标签: bash

我有一个命令,它返回一个包含环境变量的字符串:

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

需要引号,因为变量可以包含空格,如示例所示。

1 个答案:

答案 0 :(得分:2)

所以你有一个字符串,如s

$ s='foo="bar bar"'

要在避开foo的同时制作和导出环境变量eval,请尝试:

$ declare -x "${s//\"/}"

我们可以验证它是否有效:

$ env | grep foo
foo=bar bar

当然,这假设变量值中没有"

注意:

  1. declare根据提供的字符串创建变量赋值。 declare -x创建和导出变量。

  2. ${s//\"/}s的值中删除所有双引号。