Изменение пути к каталогу, заданного в переменной внутри файла с помощью оболочки

#linux #shell

#linux #оболочка

Вопрос:

Я пытаюсь измениться ${localstatedir}/lib/corei7 с ${localstatedir}/lib/${PN} помощью того, где {PN} устанавливается значение i586 .

 sed -i ${D}${sysconfdir}/file.txt -e "s|${localstatedir}/lib/corei7|${localstatedir}/lib/${PN}|g"
 

это дает мне ошибку синтаксического анализа в этой команде, что здесь не так..

Комментарии:

1. Пожалуйста, покажите точное сообщение об ошибке.

2. Используется set -x для просмотра команды после замены переменных, что может помочь ее диагностировать.

3. Без дополнительного контекста, я предполагаю, что для ввода отсутствует косая черта, где ${D}${sysconfdir}/file.txt должно быть ${D}/${sysconfdir}/file.txt

Ответ №1:

Та же самая строка работала внутри функции оболочки, спасибо @Barmar и @Eric Leung, я использовал ее так

 do_install_append () {
    if [ "${PN}" != "${BPN}" ]; then
    install -d ${D}/${localstatedir}/lib/${PN}
       sed -i ${D}${sysconfdir}/file.txt -e "s|${localstatedir}/lib/corei7|${localstatedir}/lib/${PN}|g"
       fi
}