Не удается удалить пространство от начала переменной

До сих пор поддержка UEFI существует только в установочных образах, живые образы Debian не поддерживают загрузку UEFI!

Более того, посетите эту страницу Wiki https://wiki.debian.org/UEFI

0
11.10.2018, 22:50
2 ответа

Одна вещь, которую я сделаю, это использовать echoдля удаления ненужных пробелов. В этом контексте важно опустить любые кавычки :

.
LOGDEVICELABEL=FLASHDRIVENAME
MD=$(lsblk -I 8 -o label,uuid -n|sed -e '/^$/ d' -e '/^$LOGDEVICELABEL.*$/ d')
MD=$(echo $MD) # <-- This line
MDLOGDIR=/media/$LOGDEVICELABEL/Log/$MD
mkdir $MDLOGDIR

Оболочка вызывает команду echoи предоставляет ей серию токенов, а команда echoпечатает эти токены, разделенные пробелом. Это приводит к (1 )пропуску начальных и конечных пробелов и (2 )преобразованию одного или нескольких символов пробела между токенами в один пробел.

Мое использование $(...)вместо версии с обратным тиком -в этом контексте эквивалентно версии с обратным тиком -. В целом, я нахожу эту версию более легкой для чтения. Он также имеет приятное преимущество, заключающееся в том, что он может быть вложен($(...$(...)))в то место, где версия с обратным тиком -не может.

1
28.01.2020, 02:42

Почему бы не использовать «расширение параметра», например

MDLOGDIR=/media/$LOGDEVICELABEL/Log/${MD# }
MDLOGDIR=/media/$LOGDEVICELABEL/Log/${MD/ }

или расширить sedкак

s /^ //
0
28.01.2020, 02:42

Теги

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