Como ler ${PIPESTATUS[0]
um comando, quando uma variável é definida no shell atual? Existe uma maneira de passá-lo para o shell atual de alguma forma?
Estou definindo a variável MAIL=$(ldapsearch.... | find_for_mail)
e quero ter certeza se ldapsearch
não falhou antes de decidir que o atributo mail não existe realmente no LDAP.
$ true | false
$ echo ${PIPESTATUS[0]} ${PIPESTATUS[1]}
0 1
$ Z=$(true | false)
$ echo ${PIPESTATUS[0]}
1 <--- why 1?
$ echo ${PIPESTATUS[1]}
$ Z=$(true | false;echo ${PIPESTATUS[0]} ${PIPESTATUS[1]})
$ echo $Z
0 1
$ Z=$(true | false;C="${PIPESTATUS[0]} ${PIPESTATUS[1]}")
$ echo $C
$ Z=$(true | false;export C="${PIPESTATUS[0]} ${PIPESTATUS[1]}")
$ echo $C
O problema é que
export
exporta variáveis como variáveis de ambiente do processo pai para o filho, e não o contrário. Se você estiver interessado apenas em um dos códigos de saída, poderá usar este:Uma maneira de fazer isso no Linux seria passar os dados usando um arquivo temporário (
<<<
por acaso usa um arquivo temporário).