Имея "библиотеку" с константами и функциями ( lib.sh
), Я могу включить его в свой сценарий ( script.sh
)
. /myfolder/lib.sh
......
Есть ли способ объединить включенный файл в сценарий (т.е. заменить ./ myfolder / lib.sh
на содержимое lib.sh
)?
Используйте 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
) Остальные строки, конечно же, оставим как есть.
непроверено: используйте GNU awk
gawk -i inplace '
$1 == "." {system("cat " $2); next}
{print}
' script.sh