shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Valor da variável do subshell para o shell


From: Julio C. Neves
Subject: Re: [shell-script] Valor da variável do subshell para o shell
Date: Tue, 23 May 2017 18:18:42 -0300

Fala Tiago,
se vc olhar aqui, verá que os parênteses criam um subshell e a sua variável $retorno foi criada nesse subshell e, qdo ele morreu, coitadinha, ela foi junta com ele.

Para fazer o que vc quer, o echo tem de estar dentro dos parênteses, ficando assim:

$ ( ls /etc ; retorno=$? ; echo $retorno)

Mas tome cuidado com o que vc vai fazer com esse $?, pq 99,99999% das vezes ele é desnecessário. O if, o && e o || testam esse retorno para vc.

Veja isso:

$ arq=ggffdd
$ ls $arq >/dev/null 2>&1 && echo existe || echo não existe
não existe
$ arq=n1
$ ls $arq >/dev/null 2>&1 && echo existe || echo não existe
existe

E isso é o mesmo que fazer:
if ls $arq >/dev/null 2>&1
then
    echo existe
else
    echo não existe
fi

A 4Linux me contratou para dar um treinamento de programação em Shell de 40 horas (com dicas de yad e mergulho fundo em expressões regulares) na semana do dia 29 (semana que vem) quem mora em SP e estiver interessado, apareça por lá para tomarmos um chope. Só não sei qto estão cobrando...


Abcs,
Julio

Damos treinamento em sua empresa por 
um preço, 
no mínimo, 50% mais barato que qualquer curso,
com certificado e nota fiscal.

​​
Nosso time de instrutores in company é formado somente por
autores
​ ​
de Best Sellers
​ ​
​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico


Em 23 de maio de 2017 15:29, Tiago Tarifa address@hidden [shell-script] <address@hidden> escreveu:
 

Ola pessoal,

Estou quebrando a cabeça há alguns dias.

Eu quero que o valor para uma variável exportada em um shell filho seja recebida em um shell pai. Exemplo:

$ declare -x retorno (ou export retorno)

$ ( ls /etc ; retorno=$? ) ; echo $retorno   #está vazia

como faço para pegar esse valor?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]