переменные среды печати, отсортированные по имени, включая переменные с символами новой строки - PullRequest
0 голосов
/ 19 марта 2020

Я не смог найти существующий ответ на этот конкретный c случай: я хотел бы просто отобразить все экспортированные переменные среды, отсортированные по их имени. Обычно я могу сделать это следующим образом:

$ env | sort

Однако, если некоторые переменные среды содержат символы новой строки в своих значениях (как в случае с системой CI, с которой я работаю), это не работает, потому что многострочные значения будут перепутаны с другими переменными.

1 Ответ

2 голосов
/ 19 марта 2020

Отвечая на мой собственный вопрос, так как я не смог найти его в другом месте:

$ env -0 | sort -z | tr '\0' '\n'

env -0 разделяет каждую переменную нулевым символом (что более или менее соответствует их внутреннему хранению) , sort -z использует нулевые символы вместо новых строк в качестве разделителя для сортируемых полей, и, наконец, tr '\0' '\n' снова заменяет пустые строки на новые строки.

Примечание: env -0 и sort -z являются нестандартными расширениями предоставленные GNU coreutils версиями этих утилит. Открыты для других идей о том, как сделать это с POSIX sort - я уверен, что это возможно, но это может потребовать для l oop или что-то; не так просто, как однострочник.

...