Linux-Bash Shell中tee命令返回值为0

在工作中,我们常会使用tee命令搭配管道符,将输出的结果添加到log日志中,别问我为什么一定要使用tee搭配管道符,因为我想把输出结果打印到屏幕上的同时,还将输出结果写入log日志中啦!

但有时会遇到一个很尴尬的问题,就是:

一般我们会这么写:

mysql -userbuser -ppasswd | tee -a serb.log

完了之后再根据$?去打印相应的日志到serb.log中,比如弱若$?为0,则打印success;若$?为非0,则打印failed到日志。

此时就有问题啦!因为我们发现无论mysql -userbuser -ppasswd这条指令是否执行成功,$?都是0,而我们的目的是如果这条指令执行成功,则打印success否则打印failed,这不就和我们的诉求相违背了嘛。

其实原因仔细看之后会发现,因为我们使用了tee命令加管道符,这种情况下无论mysql -userbuser -ppasswd这条指令是否成功,整条指令返回结果都会是0!

那知道了问题之后,肯定就有解决办法啦!最简单的就是重定向啦,将标准输出和错误输出全部重定向到log日志中!即改成这样:

mysql -userbuser -ppasswd 1>> serb.log 2>&1

而此时我们需要注意的是,管道符这个东西,如果管道符之后的命令执行时成功的,那么无论之前的指令成功与否,整条指令的结果都是成功,也就是说$?都是0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_34116044

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值