${PIPESTATUS[0]
在当前 shell 中设置变量时,如何读取命令?有没有办法以某种方式将它传递给当前的 shell?
我正在设置变量MAIL=$(ldapsearch.... | find_for_mail)
,并想确定ldapsearch
在我确定 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
问题在于将
export
变量作为环境变量从父进程导出到子进程,而不是相反。如果您只对其中一个退出代码感兴趣,则可以使用:在 Linux 上执行此操作的一种方法是使用临时文件(
<<<
碰巧使用临时文件)传递数据。