免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2761 | 回复: 11
打印 上一主题 下一主题

[文本处理] 关于shell中,重定向输出问题请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-05-06 20:15 |只看该作者 |倒序浏览
本帖最后由 Ryanfox 于 2016-05-10 18:49 编辑

需要在sh脚本中,执行命令输出结果的同时记录日志到log文件中。
如下面的命令,如何判断第一行,cp的命令是否执行成功呢?或者怎么通过判断是否有错误重定向数据流呢?(第二行的if条件如何编写呢)
谢谢诸位了!
  1. cp test.sh / 2>&1 | tee -a test.log
  2. if (有错误输出)then
  3. echo “有错误”
  4. else
  5. echo “执行结果正常”
  6. fi
复制代码

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-14 06:20:00每日论坛发贴之星
日期:2015-10-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-02 06:20:00程序设计版块每日发帖之星
日期:2016-05-08 06:20:00
2 [报告]
发表于 2016-05-06 22:24 |只看该作者
本帖最后由 mswsg 于 2016-05-06 22:26 编辑

还没解决呢
试试这个
  1. cp test.sh / >> test.log 2>&1
复制代码

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-14 06:20:00每日论坛发贴之星
日期:2015-10-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-02 06:20:00程序设计版块每日发帖之星
日期:2016-05-08 06:20:00
3 [报告]
发表于 2016-05-06 22:33 |只看该作者
这个呢?
  1. cp test.sh / 2>&1 | tee -a test.log
复制代码

论坛徽章:
0
4 [报告]
发表于 2016-05-06 23:34 |只看该作者
回复 3# mswsg


    这个重定向是可以的,错误信息会记录到log日志,我的意思是需要判断下,这个语句的执行结果是否正确。
  1. cp test.sh / 2>&1 | tee -a test.log
  2. if (有错误输出)then
  3. echo “有错误”
  4. else
  5. echo “执行结果正常”
  6. fi
复制代码
上面的if条件如何判断呢?
谢谢

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-10-11 06:20:0015-16赛季CBA联赛之山东
日期:2016-05-28 18:18:5615-16赛季CBA联赛之新疆
日期:2017-04-12 22:55:4715-16赛季CBA联赛之青岛
日期:2017-06-26 18:30:0315-16赛季CBA联赛之四川
日期:2017-09-04 12:27:0315-16赛季CBA联赛之福建
日期:2018-02-09 14:28:3315-16赛季CBA联赛之同曦
日期:2018-04-17 12:43:3415-16赛季CBA联赛之浙江
日期:2018-07-14 13:27:4015-16赛季CBA联赛之吉林
日期:2018-09-13 15:48:2915-16赛季CBA联赛之新疆
日期:2016-05-07 05:05:3215-16赛季CBA联赛之八一
日期:2016-03-14 12:32:06程序设计版块每日发帖之星
日期:2015-12-12 06:20:00
5 [报告]
发表于 2016-05-07 05:07 |只看该作者
cp test.sh / &> /dev/null
if [ $? -eq 0 ];then
  echo “执行结果正常”
else
  echo “有错误”
fi

论坛徽章:
0
6 [报告]
发表于 2016-05-07 11:42 |只看该作者
回复 5# baby_神


    $?是判断上一个基本命令是否执行成功(不记录日志是可以的),由于在执行命令的时候需要记录日志(cp test.sh / 2>&1 | tee -a test.log),通过$?就只能判断tee的命令是否执行成功,所以就想通过判断是否有错误重定向的数据来判断 cp 的命令是否执行成功,不知这个条件如何判断了?

论坛徽章:
4
程序设计版块每日发帖之星
日期:2015-10-14 06:20:00每日论坛发贴之星
日期:2015-10-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-02 06:20:00程序设计版块每日发帖之星
日期:2016-05-08 06:20:00
7 [报告]
发表于 2016-05-07 12:38 |只看该作者
只要判断stderr为空?不就没错误吗?

论坛徽章:
0
8 [报告]
发表于 2016-05-08 21:04 |只看该作者
回复 7# mswsg


    是的,shell脚本通过if条件怎么判断呢?

论坛徽章:
0
9 [报告]
发表于 2016-05-09 20:12 |只看该作者
回复 7# mswsg


    你好,下面代码中,“有错误输出”,stderr可以判断吗?没找到这个的判断语法的?不知大牛是否知道,
  1. cp test.sh / 2>&1 | tee -a test.log
  2. if (有错误输出)then
  3. echo “有错误”
  4. else
  5. echo “执行结果正常”
  6. fi
复制代码

论坛徽章:
2
操作系统版块每日发帖之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之八一
日期:2016-05-18 15:38:22
10 [报告]
发表于 2016-05-11 11:00 |只看该作者
通过判断test.log文件大小呢?
反正你cp的时候都是tee -a的,先获取个大小   cp完了比较下日志文件大小,变了就是有错误呗
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP