if (" $shortROI " =~ *" $argv[$ac] "*)
...
endif
Пример:
set list = (foo bar baz)
foreach a ($*)
if(" $list " =~ *" $a "*) then
echo "$a in list"
else
echo "$a NOT in list"
endif
end
Это может привести к ошибочному возврату true, если либо переменная с правой стороны, либо любое слово из списка содержат пробелы. Если вы можете выбрать символ, который не может появиться ни на одной из сторон (, например. @
), им можно заменять пробелы в каждом слове:
foreach a ($*:q)
if(" $list:q:gas/ /@/ " =~ *" $a:q:as/ /@/ "*) then
...
Поскольку проблема исчезла при загрузке с более старой версией ядра, но вновь появилась после обновления, я думаю, что вы могли случайно изменить версию ядра :, см.https://wiki.ubuntu.com/Kernel/LTSEnablementStackдля получения дополнительной информации.
По сути, в Ubuntu 20.04 может использоваться одна из трех версий ядра Linux:
linux-generic
linux-oem-20.04
linux-generic-hwe-20.04
Возможно, ваше оборудование настолько новое, что для него требуется ядро OEM или HWE. Но если система изначально была установлена с «неправильным» ядром, а затем было установлено правильное вручную, без установки соответствующего метапакета, возможно, что механизм обновления теперь по умолчанию устанавливает последнее ядро серии GA, чье smartpqi
может быть слишком старым для вашего оборудования.
Как предложил паладин в комментариях,вы можете загрузиться с SystemRescueCD и посмотреть /var/log/apt/term.log
в системе, чтобы выяснить точную версию пакета ядра (с ), которая была заменена в обновлениях.
Как только вы узнаете правильный вариант ядра, вы можете либо снова попробовать загрузочное меню, если оно все еще содержит более старую версию ядра, которая работает, либо загрузиться с SystemRescueCD, смонтировать корневой LV и выполнить в него chroot, смонтировать любые другие необходимые файловые системы, а затем установите новейший пакет ядра правильной версии и перезагрузитесь.
Если после этого система работает удовлетворительно, вам следует удалить метапакеты, связанные с «неправильными» вариантами ядра, если таковые установлены :они будут указывать apt
на выбор варианта ядра всякий раз, когда будет устанавливаться новое ядро. обновление становится доступным.
Если вариант ядра в конце концов окажется правильным, то это может быть что-то более простое, например, недостаточно места на диске для update-initramfs
создания нового файла initramfs для новых ядер.
Это легко исправить :сначала освободите место на диске (очистка apt
кешей с помощью apt clean
может пригодиться ), затем запустите update-initramfs -u -k version-of-newest-kernel-package
, чтобы повторно -создать файл initramfs. Вы можете повторить эту команду для любой версии ядра, которая в настоящее время имеет неисправную initramfs, просто чтобы предоставить вам более работоспособные варианты загрузки на случай, если в будущем возникнут новые проблемы.