Как я могу получить вывод 'ls' в переменную в grub2?

Вы должны использовать переменные в нижнем регистре (это лучшая практика).
Так, я буду использовать filename и extension вместо FILENAME и EXTENSION

Поскольку вы говорите, что "имя файла считывается из файла", я предположу, что сценарий таков:

read -r filename  <file.txt
extension=World.txt

И что вы хотите объединить обе переменные $filename и $extension со знаком подчеркивания _
Примеры, которые вы приводите (кроме: без двойного \), работают правильно:

name=${filename}_$extension
name=${filename}'_'$extension
name=$filename\_$extension

Как и некоторые другие:

name="${filename}"'_'"${extension}"
name="$filename"'_'"$extension"
name="${filename}_${extension}"

Таким образом, ваша проблема не в том, как переменные склеены вместе, а в содержимом переменных. Кажется разумным предположить, что при чтении из файла windows:

read -r filename  <file.txt

будет считываться возврат каретки \r.

Одно из простых решений (для ksh, bash, zsh) - удалить все управляющие символы из переменной read:

filename=${filename//[[:cntrl:]]/}

Это можно имитировать значением, содержащим возврат каретки:

$ filename=$'Hello\r'
$ echo "starting<$filename>end"
>endting<Hello                       ### note the return to the start of line.
$ echo "starting<${filename//[[:cntrl:]]/}>end"
starting<Hello>end

Или, заменив значение filename:

$ filename="${filename//[[:cntrl:]]/}"
$ echo "start<$filename>end"
start<Hello>end

Вывод.

Таким образом:

name="${filename//[[:cntrl:]]/}_${extension//[[:cntrl:]]/}"

Будет получено правильное значение для name, даже если другие переменные содержат управляющие символы.

1
30.11.2018, 02:37
1 ответ

Вам не нужно захватывать вывод ls, вам нужно найти команду searchв grub.

Search devices by file ('-f', '--file'), filesystem label ('-l', '--label'), or filesystem UUID ('-u', '--fs-uuid').

По сути, это позволяет вам искать ваш SSD либо по какому-либо файлу, присутствующему на SSD, либо по метке файловой системы или UUID.

3
27.01.2020, 23:31

Теги

Похожие вопросы