Учтите это:
$ echo "foo"
foo
Мы заметили, что в этой строке нет кавычек.Из руководства по bash :
Заключение символов в двойные кавычки ('' ') сохраняет буквальное значение всех символов в кавычках, за исключением' $ ','`',' \ ',
Таким образом, двойные кавычки являются синтаксисом bash. Чтобы получить буквальные двойные кавычки, нам нужно их избежать:
$ echo \"foo\"
"foo"
Еще один вариант экранирования - использоватьодинарные кавычки (снова из руководства по bash):
Заключение символов в одинарные кавычки ('' ') сохраняет буквальное значение каждого символа в кавычках.
Итакэто эквивалентно приведенной выше команде:
$ echo '"foo"'
"foo"
Применительно к вашему конкретному примеру мы можем видеть это:
$ export foo=["foo","zoom"]
$ declare -p foo
declare -- foo="[foo,zoom]"
Двойные кавычки анализируются.
Но с
$ export foo='["foo","zoom"]'
$ declare -p foo
declare -x foo="[\"foo\",\"zoom\"]"
Одинарные кавычки имеют тот же эффект, что и экранирование двойных кавычек.