Chamando uma função dentro de uma função

0

Eu estou conectando a um servidor com o ssh usando a função connect6 , então eu tenho que chamar a função operations de dentro da função connect6 que executa seus comandos.

Se eu colocar todos os comandos da função operation em connect6 funções, estou obtendo a saída desejada, caso contrário, recebo um erro: No file or directory .

connect6 () {
ssh -q [email protected] << EOF
if [ $? -eq 0 ]; then
    echo "Successfully Logged into the Server"
else
    echo "Check your credentials"
    exit
fi
$(operations)
EOF
}

operations(){
        cd /var/dist/test/
        sudo ./o
        echo "line 2 line 3" | sudo tee -a test.323
        sudo ./c
}

Obrigado

    
por Sherry 26.10.2016 / 21:25

1 resposta

0

A função operations() está definida no seu shell local.

As coisas no seu documento aqui estão sendo passadas para a entrada padrão do seu shell remoto.

Como seu shell local e seu shell remoto são dois processos diferentes, isso basicamente significa que você está solicitando ao seu shell remoto que execute uma função sobre a qual você nunca falou. Como ele não sabe de uma função ou alias chamado operations , ele volta a procurar por seu (remoto) PATH e, ao não encontrar um programa correspondente, lança o erro que você está vendo.

Três soluções possíveis:

  1. Inclua o corpo de operations() em seu documento aqui e não se incomode com uma função, pois você já encontrou trabalhos.
  2. Inclua a definição inteira de operations() em seu documento aqui. Não tenho certeza se isso lhe valerá muito nesse caso em particular com relação à opção 1, mas em um script mais longo ou se você reutilizar operations() , talvez seja mais útil.
  3. Adicione a definição operations() ao seu arquivo .bashrc ou semelhante carregado automaticamente no computador remoto. Isso significa que você pode eliminar a definição do seu script aqui.
por 26.10.2016 / 22:55