Como emular retornando valores arbitrários das funções do shell?

1

As funções do shell são apenas declarações e não retornam valores. Alguém pode compartilhar as melhores práticas em funções de escrita que retornam valores no bash?

Digamos que eu tenha uma função que une duas strings:

JoinStrings() {
    returnValue="$1$2"
}

Como reutilizo essa função no meu código? Como faço para que returnValue seja retornado ao chamador? Devo apenas usá-lo como um global após esta chamada de função? Isso leva a muitos erros com variáveis globais em todos os lugares ... Como obter reutilização de código no shell?

    
por bodacydo 03.12.2015 / 04:10

1 resposta

3

No Unix e no GNU, a saída padrão da função pode ser considerada o valor de retorno.

Veja um exemplo usando a expansão do comando shell $(...) :

JoinStrings() {
    echo "$1$2"
}

joined_strings=$(JoinStrings string1 string2)

echo string1 and string2 joined are $(JoinStrings string1 string2)

Existe uma instrução shell return para uso em funções, que define o código de saída (código de status) do comando. O código de saída é um pequeno inteiro.

    
por 03.12.2015 / 08:17