В конце концов я немного по-другому исправил это на элементарной ОС, но он должен применяться к другим операционным системам.
Устанавливать элементарные ОС в режиме UEFI как обычно. Перезагрузитесь, чтобы узнать, что вы получаете черный экран. Перезагрузите диск USB, который вы использовали для установки ОС. Когда появится grub и предложит вам попробовать «попробуйте элементарный», нажмите c и перейдите в командную строку grub. Используйте ls, чтобы попытаться определить, какой из доступных дисков и разделов - тот, который вы только что установили /root. Это может быть невозможно, если вы пошли с полным шифрованием диска, но я просто зашифровал свой /home. Как только вы это выясните, установите его в свой корень в grub. Для меня это выглядит так: set root=(hd1,2). Используйте элементарную конфигурацию grub для загрузки в вашу установку элементарной ОС: conffile /boot/grub/grub.cfg. Если этот файл не существует, вы, вероятно, выбрали неправильный диск / раздел на предыдущем шаге. Он должен загрузиться в элементарную ОС. На этом этапе вы можете вынуть USB-накопитель, и он должен работать нормально. (возможно, необязательно). Перейдите в корневую оболочку и создайте файл, упомянутый в другом ответе: sudo touch sudo touch /boot/bootx64.efi Обновить grub: sudo update-grub Перезагрузка в BIOS dell Переход к экрану последовательности загрузки Добавьте параметр, назовите его Ubuntu (или независимо). Нажмите на три точки, чтобы выбрать файл efi. Вы должны выбрать EFI\ubuntu\grubx.efi или что-то в этом роде. Другой ответ, если вы выбрали shimx64.efi, но я полагаю, что grub не обновит это. Перейдите в меню дополнительных параметров загрузки. Отключите опцию прежнего ПЗУ. По какой-то причине я должен это сделать или снова получить черный экран. Сохраните его, примените, перезапустите, выиграйте.Он сохраняется. Я еще не обновил мое ядро, поэтому не могу сказать, что он будет работать вечно. Из-за этого теперь я ношу живой USB в любое время.
Предполагая, что фрагмент кода является частью командной строки bash / командной строки. Цикл for имеет общий вид, такой как.
for arg in [list]
do
command(s)...
done
Не имеет done части for петли.
syntax error: unexpected end of file
Дальнейшие имена переменных должны быть последовательными. file и filename, по-видимому, используются взаимозаменяемо. Целесообразно цитировать переменные, чтобы предотвратить размножение слов. Переменная $filename, используемая в третьей строке фрагмента кода, неинициализирована, т.е. пуста. Это приводит к выполнению head -3 '', давая результаты head: cannot open '' for reading: No such file or directory минимум 10k раз.
Также cat $filename | head -3 $filename избыточно добавляет к рабочей нагрузке, по-видимому, никакой цели.
Исправление всех этих проблем дает.
for file in *;do
if [[ -f "$file" ]];then
rid="$(head -3 "$file" | awk '{print $3}')"
echo "$rid"
else
echo "$file" " not found"
fi
done
или как один вкладыш
for file in *;do if [[ -f "$file" ]];then rid="$(head -3 "$file" | awk '{print $3}')"; echo "$rid"; else echo "$file" " not found"; fi;done
Программа shellcheck весьма полезна для поиска этих ошибок, прежде чем запускать код. Shellcheck доступен в репозитории юниверсов.
Для дальнейшего ознакомления см. Advanced Bash-Scripting Guide от Mendel Cooper
На ваш скрипт вы не grep с идентификатором, о котором вы говорите, или вы не проверяете его выход или нет! Вы просто печатаете третье значение третьей строки (если вы имеете в виду, что grep получает / печатает, если ID есть или нет).
Ниже awk команда проверяет получение / printing , если он выходит в каждом файле в третьей строке, затем напечатайте значение столбца 3 rd ; В противном случае, если этого не существует, напечатайте "Not Fouund" и прочитайте nextfile.
awk 'FNR==3&& !/ID/{print "Not Found"; nextfile} FNR==3 && /ID/{print $3}' file*
В man awk
nextfile Stop processing the current input file. The next input record read comes from the next
input file. FILENAME and ARGIND are updated, FNR is reset to 1, and processing starts
over with the first pattern in the AWK program. Upon reaching the end of the input
data, gawk executes any END rule(s).
Предполагая, что фрагмент кода является частью командной строки bash / командной строки. Цикл for имеет общий вид, такой как.
for arg in [list]
do
command(s)...
done
Не имеет done части for петли.
syntax error: unexpected end of file
Дальнейшие имена переменных должны быть последовательными. file и filename, по-видимому, используются взаимозаменяемо. Целесообразно цитировать переменные, чтобы предотвратить размножение слов. Переменная $filename, используемая в третьей строке фрагмента кода, неинициализирована, т.е. пуста. Это приводит к выполнению head -3 '', давая результаты head: cannot open '' for reading: No such file or directory минимум 10k раз.
Также cat $filename | head -3 $filename избыточно добавляет к рабочей нагрузке, по-видимому, никакой цели.
Исправление всех этих проблем дает.
for file in *;do
if [[ -f "$file" ]];then
rid="$(head -3 "$file" | awk '{print $3}')"
echo "$rid"
else
echo "$file" " not found"
fi
done
или как один лайнер
for file in *;do if [[ -f "$file" ]];then rid="$(head -3 "$file" | awk '{print $3}')"; echo "$rid"; else echo "$file" " not found"; fi;done
Программа shellcheck весьма полезна для поиска этих ошибок, прежде чем запускать код. Shellcheck доступен в репозитории юниверсов.
Для дальнейшего ознакомления см. Advanced Bash-Scripting Guide от Mendel Cooper
На ваш скрипт вы не grep с идентификатором, о котором вы говорите, или вы не проверяете его выход или нет! Вы просто печатаете третье значение третьей строки (если вы имеете в виду, что grep получает / печатает, если ID есть или нет).
Ниже awk команда проверяет получение / printing , если он выходит в каждом файле в третьей строке, затем напечатайте значение столбца 3 rd ; В противном случае, если этого не существует, напечатайте "Not Fouund" и прочитайте nextfile.
awk 'FNR==3&& !/ID/{print "Not Found"; nextfile} FNR==3 && /ID/{print $3}' file*
В man awk
nextfile Stop processing the current input file. The next input record read comes from the next
input file. FILENAME and ARGIND are updated, FNR is reset to 1, and processing starts
over with the first pattern in the AWK program. Upon reaching the end of the input
data, gawk executes any END rule(s).