Я хочу напечатать все переменные среды, кроме определенных переменных.
Поэтому я нашел решение для stackoverflow: Bash: перебрать переменные, содержащие шаблон в имени
while IFS='=' read -r name value; do
if [ ! "$name" = "SOMEVAR" -a ! "$name" = "SOMEOTHERVAR" ]; then
echo "$name=$value"
fi
done < <(env)
Однако это не работает, если мои переменные окружения содержат символы новой строки, такие как:
export SOMEVAR="some
text with
newlines"
. При использовании приведенного выше решения будет напечатано:
text with=
newlines=
PWD=/home/...
...
Я также пытался использовать нуль-завершенные строки и многострочное сопоставление с sed
:
env -0 | sed -e '{N; s@SOMEVAR.*\x0@@ ; D}' | tr '\0' '\n'
Но это обрезает вывод и всегда сначала печатает последнюю строку переменной с многострочным содержимым:
newlines
PWD=/home/...
...
IsЕсть ли способ пропустить многострочные переменные среды при их печати?