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

eval and export remove the double quote (") from the string

本问题已经有最佳答案,请猛点这里访问。

我想用下面的方法导出一个带有eval的字符串。但在下面的示例中,我得到了不带引号的字符串作为指示

1
2
3
4
5
6
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"}

如何解决这个问题?


这对我很有用:

1
2
3
4
5
6
$ a='{"name":"any"}'
$ echo $a
{"name":"any"}
$ export b="$a"
$ echo $b
{"name":"any"}

为什么要使用eval导出变量?注意,变量名也被插入,因此可以这样做:

1
2
3
4
$ foo=bar
$ export $foo=baz
$ echo $bar
baz


我想先说一下,我不太明白你为什么这样做,但请尝试以下方法:

1
2
3
4
5
6
7
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$