LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 588|回复: 3

谁能看的懂这段代码?

[复制链接]
发表于 2005-6-26 11:23:43 | 显示全部楼层 |阅读模式
#!/bin/bash

#bash example of usage of PIPESTATUS: pipe.sh

./a.sh | ./b.sh
if (( ${PIPESTATUS[0]} || ${PIPESTATUS[1]} )); then
    echo error
fi



#(./a.sh; echo $? 1>&3) | ./b.sh;
#3>&1


#echo $R

#((${PIPESTATUS[0]} && ${PIPESTATUS[1]})) || (echo one of a.sh or b.sh failed)
#if [ ${PIPESTATUS[0]} -ne 0 ] || [ ${PIPESTATUS[1]} -ne 0 ]
#then
#    echo one of a.sh or b.sh failed
#fi


#(((./a.sh; echo $? >3) | ./b.sh ) 3>&1) || (echo one of a.sh or b.sh failed)
发表于 2005-6-26 18:41:42 | 显示全部楼层
看不懂
回复 支持 反对

使用道具 举报

发表于 2005-6-27 16:16:11 | 显示全部楼层
怎么都用#注释掉了?
./a.sh | ./b.sh
if (( ${PIPESTATUS[0]} || ${PIPESTATUS[1]} )); then
echo error

关键是不知道PIPESTATUS[0]和[1]的状态。
是不是对应a.sh的运行结果?
回复 支持 反对

使用道具 举报

发表于 2005-6-27 16:59:11 | 显示全部楼层
(./a.sh; echo $? 1>&3) | ./b.sh
表示的是子 shell(./a.sh; echo $? 1>&3)的标准输出重定向到文件流3,再把文件流3的定向到b.sh的输入

(((./a.sh; echo $? >3) | ./b.sh ) 3>&1)
表示的是(./a.sh; echo $? >3) 中echo的输出到文件描述符3指定的文件流,但是整个shell的输出还是在1,然后把1重定向到b.sh的输入,最后shell((./a.sh; echo $? >3) | ./b.sh ) 的标准输出又重定向到3
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表