Como chamar uma função dentro de outra função, mas em um shell diferente

0

Eu tenho um script de shell com duas funções. A segunda função precisa ser executada como outro usuário a partir de um novo shell bash. A primeira função é invocada no segundo. A função 1 usa algumas das variáveis de script.

#!/bin/bash
foo=bar
function1() {
    echo -e "$1"
}

function2() {
    echo "This is function2"
    function1 "I use function1"
    echo "I also need to print ${foo}"
}
export -f function2
su username -c "/bin/bash -c function2"

Na verdade, execute this function2 dentro de um novo shell e não consiga encontrar nem function1 nem foo.

Existe uma maneira de injetar ou passá-los para a nova função?

    
por storm 02.01.2018 / 15:38

1 resposta

2

Este é um trabalho para arquivos de script separados, não para funções.

script1.sh :

#! /bin/bash
echo -e "$1"

script2.sh :

#! /bin/bash
echo "This is script2"
bash script1.sh "I use script1"
echo "I also need to print ${foo}"

e script.sh :

#! /bin/bash
foo=bar
export foo
sudo -Eu username bash script2.sh

Forçar o uso de funções aqui levará a uma solução insalubre e inoportuna. Não.

    
por muru 02.01.2018 / 15:44