2013-08-22 3 views
0

Я хочу экспортировать строку с Eval следующим образом. Но я получаю строку без кавычек, как указание в следующем примереEval и экспорт удалить двойные кавычки (") из строки

[email protected]:~# a="{\"name\":\"any\"}" 
[email protected]:~# echo $a 
{"name":"any"} 
[email protected]:~# eval "export -- \"b=\"\"$a\"\"\"" 
[email protected]:~# echo $b 
{name:any} ------>> expect {"name":"any"} 

Как ?, чтобы решить эту проблему

ответ

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$ 
2

Это работает для меня:

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

Почему вы хотите использовать eval экспортировать переменную Примечание имя переменной интерполируется, так что вы можете сделать? это:

$ foo=bar 
$ export $foo=baz 
$ echo $bar 
baz 
+0

Я работаю над открытым исходным кодом и I нашел это таким образом. и он использует - в команде экспорта, и я не знаю, почему он это сделал. – MOHAMED

+0

@MOHAMED: он, вероятно, использует «экспорт» - как для ясности (он действительно показывает экспорт больше, чем если бы его там не было), и чтобы указать, что экспорт не использует какие-либо параметры (-f, -p , и т.д) ? –

+0

+1 для того, чтобы не использовать 'eval', когда это не является необходимым (и в этом случае, похоже, нет никаких причин использовать его вообще). –

Смежные вопросы