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

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

Mestre Kame
mlgrassi

(usa Debian)

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.


  


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

Perfil removido
removido

(usa Nenhuma)

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"









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts