“mescla” o conteúdo de um arquivo de script de shell em outro

0

Tendo uma "biblioteca" com constantes e funções ( lib.sh ), posso incluí-la no meu script ( script.sh )

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

Existe uma maneira de mesclar o arquivo incluído no script (ou seja, substituir ./myfolder/lib.sh pelo conteúdo de lib.sh )?

    
por Ciprian Constantinescu 09.01.2017 / 15:24

2 respostas

1

Use sed :

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

O que esse script faz é:

  • \|^\. /myfolder/lib\.sh| { ... } = > localize as linhas que começam com . /myfolder/lib.sh e execute os comandos dentro das chaves
  • r /myfolder/lib.sh = > produzir o conteúdo de /myfolder/lib.sh
  • d = > exclua a linha ( . /myfolder/lib.sh )

As outras linhas são deixadas como é claro.

    
por 09.01.2017 / 17:44
0

não testado: use o GNU awk

gawk -i inplace '
    $1 == "." {system("cat " $2); next}
    {print}
' script.sh
    
por 09.01.2017 / 15:50