eval和export从字符串中删除双引号(“)

时间:2013-08-22 16:07:22

标签: linux bash shell export eval

我想以下列方式导出带有eval的字符串。但我得到的字符串没有引号作为以下示例中的指示

root@linux:~# a="{\"name\":\"any\"}"
root@linux:~# echo $a
{"name":"any"}
root@linux:~# eval "export -- \"b=\"\"$a\"\"\""
root@linux:~# echo $b
{name:any} ------>> expect {"name":"any"}

如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

这对我有用:

$ a='{"name":"any"}'
$ echo $a
{"name":"any"}
$ export b="$a"
$ echo $b
{"name":"any"}

为什么要使用eval导出变量?注意,变量名也是插值的,所以你可以这样做:

$ foo=bar
$ export $foo=baz
$ echo $bar
baz

答案 1 :(得分:1)

我要抛弃我不太明白为什么你这样做,但请尝试以下方法:

bash-3.2$ a="{\"name\":\"any\"}"
bash-3.2$ echo $a
{"name":"any"}
bash-3.2$ eval "export -- b='$a'"
bash-3.2$ echo $b
{"name":"any"}
bash-3.2$