У меня есть bash-скрипт с зависимостью JQ (версия jq-1.5-1-a5b5cbe) и он работает по желанию на Ubuntu 18.04.2 LTS (bash версии 4.4.19 (1) -релиз), но он ведет себя по-другому наUbuntu 16.04.3 LTS (выпуск bash версии 4.3.48 (1)).
while read i;do
echo ${i}
echo "...."
done<<<$(jq -c '.[]' <<<'[{"name" : "alpha"},{"name" : "beta"},{"name" : "gama"},{"name" : "delta"}]')
Я ожидаю, что каждый объект будет напечатан в отдельных строках, так же, как тот, который я запускал в Ubuntu 18,
{"name":"alpha"}
....
{"name":"beta"}
....
{"name":"gama"}
....
{"name":"delta"}
....
Но на Ubuntu 16 я получаю этот вывод,
{"name":"alpha"} {"name":"beta"} {"name":"gama"} {"name":"delta"}
....
Когда я пытаюсь запустить следующий скрипт, он отлично работает на обоих объектах в отдельных строках. Но так как цикл While выполняется в подоболочке, я не могу сохранить состояние переменной, если в ней выполняется какая-либо операция. Так что это нежелательно, так как я хочу выполнить некоторую операцию и сохранить состояние переменной.
jq -c '.[]' <<<'[{"name" : "alpha"},{"name" : "beta"},{"name" : "gama"},{"name" : "delta"}]' |while read i;do
echo ${i}
echo "...."
done