FreeBSD: проблема с драйвером RAID

sed: -e expression #1, char 2: unterminated `s' command

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

$ a=$'\nfoo'
$ b='bar'
$ sed "s@$a@$b@"
sed: -e expression #1, char 2: unterminated `s' command

Новая строка без символов завершает команду sed. Если поставить новую строку позже в a, то, конечно, ошибка возникнет на более позднем символе.

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

Проверьте, что на самом деле содержат ваши переменные, с помощью чего-то вроде этого:

printf ">%s<\n" "$to_replace"
printf "%q\n" "$to_replace"

Последнее - это функция Bash, которая отображает строку в кавычках таким образом, что Bash принимает ее в качестве ввода. set -x также покажет, что поступает в командную строку sed, но вам нужно будет заметить литеральную новую строку из его вывода.

Итак, если одна ведущая новая строка - это все, что есть, вы можете удалить ее в начале сценария:

to_replace=${pc#*,}
to_replace=${to_replace#$'\n'}

(Можно объединить их в один, но отдельные шаги работают, даже если новой строки там нет)

.
1
16.06.2017, 15:34
1 ответ

Вот что я сделал.

В скомпилированный ISO добавлена ​​как новая, так и старая версия aac.

Я попытался загрузить оба драйвера на новое оборудование, получив другое имя (aac _новое )для новой версии драйвера aac, и ядро ​​внутренне смогло использовать эту новую версию.

Загрузил только старую версию на старом оборудовании, используя loader.conf, отключив aac _new.

0
28.01.2020, 00:54

Теги

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