«объединить» содержимое одного файла сценария оболочки с другим

Имея "библиотеку" с константами и функциями ( lib.sh ), Я могу включить его в свой сценарий ( script.sh )

. /myfolder/lib.sh
......

Есть ли способ объединить включенный файл в сценарий (т.е. заменить ./ myfolder / lib.sh на содержимое lib.sh )?

0
09.01.2017, 16:50
2 ответа

Используйте sed :

sed -i.bak '\|^\. /myfolder/lib\.sh| {
    r /myfolder/lib.sh
    d
}' script.sh

Этот сценарий делает следующее:

  • \ | ^ \. / myfolder / lib \ .sh | {...} => найдите строки, начинающиеся с . /myfolder/lib.sh и выполните команды внутри фигурных скобок
  • r /myfolder/lib.sh => выведите содержимое /myfolder/lib.sh
  • d => удалите строку (. /myfolder/lib.sh)

Остальные строки, конечно же, оставим как есть.

1
28.01.2020, 02:47

непроверено: используйте GNU awk

gawk -i inplace '
    $1 == "." {system("cat " $2); next}
    {print}
' script.sh
0
28.01.2020, 02:47

Теги

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