Linux 标准输出重定向 缺失的问题

初学linux shell. 想写个脚本a.sh 分析另外一个脚本b.sh中某程序的执行输出结果.
./a.sh b.sh args

a.sh 如下:

#!/bin/sh
./$1 $2 > /tmp/log
#Search keyword
grep -l "keyword"  /tmp/log
if [ $? -eq 0 ]
then
        code=0
else
        code=-1
fi
exit


但是在/tmp/log 里面总是只有部分输出, 另外一部分由于没有重定向成功而打印在了屏幕上.

解决方案:

修改第一行为
./$1 $2 > /tmp/log 2>&1

原因:
程序中有标准输出stdout也有错误输出stderr. 之前的写法只是重定向了stdout, 并未包含stderr.

 

以下内容转载自:http://apps.hi.baidu.com/share/detail/40331116

cmd > file 把 stdout 重定向到 file 文件中;

cmd >> file 把 stdout 重定向到 file 文件中(追加);

cmd 1> fiel 把 stdout 重定向到 file 文件中;

cmd > file 2>&1 把 stdout 和 stderr 一起重定向到 file 文件中;

cmd 2> file 把 stderr 重定向到 file 文件中;

cmd 2>> file 把 stderr 重定向到 file 文件中(追加);

cmd >> file 2>&1 把 stderr 和 stderr 一起重定向到 file 文件中(追加);


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值