grep -E '^${g_filPfix}-([0-9]{3})-([0-9]{8})-([0-9]{9})${g_fileExt}$'
Непосредственной проблемой здесь является то, что шаблон для grep
заключен в одинарные кавычки, поэтому оболочка не будет раскрывать переменные g_filPfix
и g_fileExt
. Замена кавычек двойными -кавычками исправит это. (и скобки в шаблоне не нужны.)
Подобный разбор вывода ls
может вызвать проблемы с именами файлов, содержащими пробелы или некоторые нечетные символы. В частности, имя файла с пробелом посередине будет восприниматься как два имени файла.
Если вам на самом деле не нужен такой строгий шаблон, вы можете просто обработать все файлы с данным префиксом и суффиксом:
for f in "$dir/$prefix"*"$suffix" ; do
somecmd "$f"
done
Если вам нужен строгий шаблон, некоторые оболочки (, такие как Bash, которые, вероятно, есть у вас в Linux ), могут выполнять сопоставление регулярных выражений без внешних инструментов. Таким образом, чтобы перебрать все файлы в каталоге и игнорировать файлы, не соответствующие шаблону:
for f in "$dir"/* ; do
[[ "$f" =~ "/$prefix"-[0-9]{3}-[0-9]{8}-[0-9]{9}"$suffix"$ ]] || continue
somecmd "$f"
done
BIOS не может выбрать ОС для загрузки; вы должны заменить GRUB другим менеджером загрузки, если у вас несколько операционных систем. Некоторые варианты: