O código de saída do subshell afeta o registro em log

0

Eu tenho este script bash:

echo "x" & X=$!
echo "y" & Y=$!
( echo "z" ; exit 0; ) & Z=$!  # this line

wait ${X} && echo "X $?" 
wait ${Y} && echo "Y $?" 
wait ${Z} && echo "Z $?" 

quando eu altero a saída 0 para a saída 1, a última instrução de eco do script não é executada. Por exemplo, aqui está a saída quando o código de saída é 0:

x
X 0
z
y
Y 0
Z 0

mas quando eu altero para 1:

x
y
X 0
z
Y 0

Estou assumindo que o que está entre parênteses deve ser executado em uma subcamada. Alguém sabe por que meu código faz isso?

    
por Alexander Mills 12.02.2017 / 11:08

1 resposta

4

Conforme documentado em help wait :

Returns the status of ID

Portanto, se o processo sair com 1 , wait retorna 1 e && de curtos circuitos, não executando o segundo comando. Tente ; em vez de && se quiser imprimir o valor independentemente do sucesso do primeiro comando.

    
por 12.02.2017 / 11:27