Я редактировал другую запись и сделал ошибку. Augh. В любом случае, возможно, это может помочь? https://stackoverflow.com/a/11944320/1594168
Обратите внимание, что поскольку формат массива оболочки недокументирован в bash или любой другой стороне оболочки, очень трудно вернуться массив оболочек независимо от платформы. Вам нужно будет проверить версию, а также создать простой скрипт, который объединяет все массивы оболочек в файл, который могут разрешить другие процессы.
Однако, если вы знаете имя массива, который хотите принять назад домой, тогда есть способ, хотя немного грязный.
Допустим, у меня есть
MyAry[42]="whatever-stuff";
MyAry[55]="foo";
MyAry[99]="bar";
Итак, я хочу забрать его домой
name_of_child=MyAry
take_me_home="`declare -p ${name_of_child}`";
export take_me_home="${take_me_home/#declare -a ${name_of_child}=/}"
Мы можем видеть, что он экспортируется путем проверки из подпроцесса
echo ""|awk '{print "from awk =["ENVIRON["take_me_home"]"]"; }'
Результат:
from awk =['([42]="whatever-stuff" [55]="foo" [99]="bar")']
Если мы абсолютно обязаны, используйте env var для его выгрузки.
env > some_tmp_file
Затем
Перед запуском другого скрипта,
# This is the magic that does it all
source some_tmp_file
Полагаю, вы ожидаете, что этот запрос не вернет совпадающих документов, но он все равно возвращает документ, даже если значение «permissions» не соответствует ожидаемому.
Это объясняется выражением запроса FILTER:
u.gacl[* filter contains(CURRENT.permissions,'c') and CURRENT.principal == 'users/12345']
Это выражение использует оператор звезды, который всегда создает массив в качестве результата. Поскольку никакие элементы массива не соответствуют фильтру, используемому для отдельных элементов, результатом всего выражения является просто пустой массив:
[]
Таким образом, условие FILTER запроса преобразуется в
FILTER []
И []
равно true
при преобразовании в boolean.filter (
Таким образом, при использовании этого условия FILTER каждый документ будет совпадать.
Изменение условия на
FILTER LENGTH(u.gacl[* filter contains(CURRENT.permissions,'c') and CURRENT.principal == 'users/12345']) > 0
[ 1113] должен делать то, что вы хотите.