sed с внешним файлом сценария -Как применять переменные оболочки?

Только что проверил репозиторий вручную по адресу http://repos.lax-noc.com/elrepo/kernel/el6/x86_64/RPMS/, и там нет пакета с именем kernel-ml. Возможно это опечатка и вы хотите установить пакет kernel-lt

0
15.03.2021, 15:44
2 ответа

Хередок спешит на помощь:

varin=a; varout=X
sed -f - <<_CODE_    file
s/$varin/$varout/
_CODE_

Но имейте в виду, этот подход чреват ошибками/неправильными результатами, если интерпретатор командного интерпретатора десантируется внутрь без надлежащей санитарной обработки. Возьмем, к примеру, что произойдет, если varout будет содержать символ &или /и т. д.

0
18.03.2021, 22:24

Вы можете использовать envsubstдля замены переменных в вашем скрипте нужными значениями перед запуском sed.

$ cat script.sed
s/$varin/$varout/
s/$varout/&$varin&/

Замена строк $varinили ${varin}и $varoutили ${varout}в script.sedзначениями их переменных:

$ varin='a' varout='X' envsubst '$varin $varout' <script.sed
s/a/X/
s/X/&a&/

Команда sed, использующая замену процесса:

sed -f <(varin='a' varout='X' envsubst '$varin $varout' <script.sed) file
4
18.03.2021, 22:24

Теги

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