В find
добавлен аргумент non_existent_dir
для генерации сообщения об ошибке.
#!/bin/bash
error=$(find. non_existent_dir 2>&1 > output.txt)
if (($?)); then
printf "%s\n%s\n%s\n" "message before" "$error" "message after" >> log.txt
fi
Пояснение:
2>&1 > output.txt
-stderr
(номер 2 )перенаправлен наstdout
(номер 1 )и stdout
на номер output.txt
.
$?
-статус завершения команды find
. find
завершается со статусом 0, если все файлы обработаны успешно, и больше 0, если возникают ошибки.
find. non_existent_dir 2>&1 > output.txt |
awk 'NR == 1 {print "start message"}
{print}
END {if(NR > 0) print "end message"}' >> log.txt
Пояснение:
find
такая же, как и в предыдущем варианте. awk
часть -Если ввод не содержит строк (ошибок не было ), он ничего не напечатает. NR == 1 {print "start message"}
-если это первая строка, вывести "стартовое сообщение". {print}
-просто напечатайте все входные строки. END {if(NR > 0) print "end message"}
-проверка в конце выполнения, были ли получены какие-либо строки из ввода(NR
-количество записей )? Если это так, напечатайте «конечное сообщение». Что ж, кажется, обновления обновили мою конфигурацию grub.
Чтобы решить эту проблему, я расшифровал и смонтировал рабочий раздел, затем скопировал конфигурацию grub из рабочего раздела в личный раздел и запустилupdate-grub
:
lvscan
Это дает мне два имени тома:/dev/NAME/swap
и /dev/NAME/VOL
. Я использую эти значения в командах ниже.
vgchange -ay # activate all of the volumes so that they can be mounted
cryptsetyp luksOpen /dev/sda3 NAME # this prompts for a password to decrypt the volume
mkdir /media/mydev
mount /dev/mapper/NAME-VOL /media/mydev # Notice that NAME and VOL are separated by a hypen instead of slash here
cp /media/mydev/etc/default/grub /etc/default/grub
update-grub
reboot