Pular para o conteúdo

Como fazer uma função retornar 2 ou mais valores de variáveis [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Como fazer uma função retornar 2 ou mais valores de variáveis [RESOLVIDO]

Enviado em 04/11/2015 - 19:12h

Supondo que tenhamos a função abaixo como exemplo:

DIR='/home/usuario'
function retornaXY {
aux=$1;
if [ -e $aux ];then
status='ARQUIVO EXISTE';
extrai_char=`echo -n $(echo -n "$aux" | cut -d. -f 1) | wc -m`;
char_1=`expr $extrai_char - 3`;
char_2=`expr $extrai_char - 1`;
id_arquivo=`echo -n "$aux" | cut -d. -f 1 | cut -c "$char_1-$char_2"`;
else
status='ARQUIVO NAO EXISTE';
id_arquivo=0;
fi
}

retornaXY arquivo_id_123T.log;

Preciso que a mesma retorne o conteúdo das variáveis status e id_arquivo. Porém a mesma não retorna nada ao chamá-la.

Quero saber (independente de qual seja meu objetivo) como se faz para uma função em shell script retornar mais do que um valor.

Responder tópico

2. Re: Como fazer uma função retornar 2 ou mais valores de variáveis [RESOLVIDO]

Enviado em 04/11/2015 - 19:27h

Pode usar o conceito de separadores para fazer uma função retornar mais de um valor. Por exemplo:

retornaXY() {
((x = 0)); ((y = 1))
echo "$x;$y"
}
Observe que usei o ponto e vírgula para separar os valores retornados. E para capturar esses valores, é possível fazer de várias formas, uma delas é com o cut:

var1=$(retornaXY | cut -f1 -d\;)
var2=$(retornaXY | cut -f2 -d\;)
echo -e "Primeiro valor retornado: $var1\nSegundo valor retornado: $var2"

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder