Подстановка команды без кавычек `cat $PWD/$1 | jq -cr '.[]'`
делает следующее:
cat $PWD/$1 | jq -cr '.[]'
. Кстати, это слишком сложный способ записи jq -cr '.[]' <"$1"
, за исключением того, что этот вариант не нарушает , если $1
содержит определенные специальные символы или является абсолютным путем. Шаги 2 и 3 в просторечии известны как «оператор split+glob» и это почти никогда не то, что вам нужно . Всегда используйте двойные кавычки вокруг подстановок переменных и команд, если вы точно не знаете, почему вам нужно опустить кавычки .
Чтобы обработать файл построчно в оболочке,используйте петлюwhile read
:
jq -cr '.[]' <"$1" |
while IFS= read -r line; do
printf '%s\n' "$line"
done
Но, возможно, вам лучше подключиться к какому-нибудь другому инструменту. Оболочки сами по себе плохо обрабатывают большие объемы строковых данных.
Вероятно, Ubuntu и CentOS используют разные уровни журнала консоли, поэтому Ubuntu отфильтровывает сообщение ACPI: Preparing...
и вместо этого, вероятно, выводит другое сообщение из сценариев завершения работы.
Сообщение Ubuntu Starting Power-Off...
не имеет префикса [ <uptime in seconds> ]
, как все сообщения журнала ядра, поэтому оно, вероятно, создается другим механизмом.
Сообщения журнала, создаваемые ядром, назначаются классам приоритета, а сообщения с низким -приоритетом обычно не отображаются на консоли. Пожалуйста, запустите sudo sysctl kernel.printk
в обеих системах и посмотрите, используют ли разные дистрибутивы разные значения. Команда должна вывести четыре числа :, первое из которых указывает наивысший класс приоритета сообщений ядра для фильтрации.