Спасибо, что Антон за ваш ответ выше, он значительно способствовал решению моей проблемы.
Кажется, что решение моего вопроса было две части.
grub_cmdline_linux = "cryptdevice = / dev / sdb2: root = / dev / mapper / lvmpool-root"
CryptDevice состоит из раздела, которую вы также применили шифрование, в моем случае / dev / sdb2 и lvmpool (мою группу громкости)
root просто указывает на местоположение моего зашифрованного корня LVMPOOL (который находится на SDB2)
grub-mkconfig -o /boot/grub/grub.cfg
После того, как я это сделал, система загрузилась прямо в подсказку, чтобы разблокировать корневой раздел.
Нет ничего плохого в том, как вы это делаете, при условии, что сбои
будут происходить только в одной строке выхода. Другим вариантом может быть привязка к тому, что количество сбоев всегда будет в 4-й строке вывода. Это очень просто сделать с помощью awk
:
lein test | awk 'NR==4 { print $1 }'
или привязать к строке, где отказывает,
является вторым полем:
lein test | awk '$2=="failures," { print $1 }'
или привязать к последней строке:
lein test | awk 'END { print $1 }'
или использовать sed
для привязки к последней строке:
lein test | sed -n '$ s/^\([0-9]*\).*/\1/p'
] Ваше решение возвращает часть каждой строки, содержащей "ошибки" до первого пробела. [
] []Если вы хотите быть более точным, вы можете сделать:[
] [sed -n '$s/^\([[:digit:]]\{1,\}\) failures.*/\1/p'
]
[]То есть, учитывать только последнюю строку ([]$[
]), и только если она следует определенному шаблону: любая непустая последовательность десятичных цифр, за которой следует [] отказов[
] (и возвращать эту последовательность цифр).[
С помощью awk (напечатать $1, значит первый столбец):
lein test | grep 'failures' | awk '{print $1}'
Through awk,
lein test | awk '/ failures,/{print $1}'
А с помощью GNU sed
,
lein test | sed -n '/ failures,/s/^\([^ ]\+\).*/\1/p'
Или portably:
lein test | sed -n '/ failures,/s/^\([^ ]\{1,\}\).*/\1/p'
Можно попробовать использовать этот код:
lein test | tail | tr " " "\n" | head -1
, который должен дать вам то, что вы хотите.
Учитывая вывод, возможно (если у вас есть GNU реализация grep
):
lein test | grep -m 1 -o '^[[:digit:]]*'
Safer, с той же самой реализацией:
lein test | grep -E 'failures.*errors' | grep -o '^[[:digit:]]*'
Из manpages:
-o, --only-matching
Печатать только совпадающие (непустые) части совпадающей строки, с каждой такая часть на отдельной выходной линии.
-m NUM, --max-count=NUM
Перестаньте читать файл после строк соответствия NUM.[...]
Попробуйте следующее:
lein test | tail -n 1 | tr -s " " "\n" | head -n 1
Как это работает?
tail -n 1
берет последнюю строку tr -s "" "\ n"
заменяет все пробелы символом новой строки. Это хороший трюк для токенизации ввода каким-либо символом. head -n 1
занимает первую строку