shell 如何把捕获的错误信息复制给变量?

2016-04-21 16:12:32 +08:00
 EvanQu

line 3 我这样捕获错误正不正确啊?

我输出的 res 是空的

#!/bin/bash
echo `hexo clean`
res=`hexo generate|grep ERROR`
echo "======== ${res}   ========"
if [ ! -n "$res"]
then
        echo `hexo deploy git`
        echo "1"
else
        echo $res > log
        echo "0"
fi

顺便说下我想实现的功能

  1. 我在本地写好文章提交到github
  2. vps 每隔一段时间获取github的文章
  3. 将文章移到_post文件夹
  4. 然后 hexo 生成和发布

2-4是交给一个计划任务处理的

1908 次点击
所在节点    问与答
9 条回复
Havee
2016-04-21 16:44:31 +08:00
$? 来获取上一条命令的状态码
res=`command`
if [ $? -eq 0 ]; then
command
else
command
fi

如果判断 grep 是否输出 error 字符串的话,可以用 -z 来判断
res=`command`
if [ -z $res ]; then
command
else
command
fi
EvanQu
2016-04-21 16:49:39 +08:00
@Havee 刚重新检查了代码 发现 res=`hexo generate|grep ERROR` 这句话 捕获不到错误信息。。。
hexo generate 输出的 INFO 信息可以捕获 ERROR 信息捕获不了 不知道为什么
Havee
2016-04-21 16:54:25 +08:00
@EvanQu 你应该将 hexo generate 的输出重定向到一个文件,再去判断
EvanQu
2016-04-21 17:03:06 +08:00
@Havee 我把 hexo generate echo 出来后发现 全是 INFO 的信息 没有 ERROR
Havee
2016-04-21 17:09:31 +08:00
@EvanQu 那不是表示正常么...
fangdingjun
2016-04-21 17:19:21 +08:00
hexo generate 2>&1|grep ERROR
复习 shell 基础中的关于 stdout, stderr 部分
ooxxcc
2016-04-21 17:25:56 +08:00
2>&1

楼上已经解释了
EvanQu
2016-04-21 17:28:34 +08:00
@fangdingjun 谢谢 我没学过 shell 是一边 google 一遍写的 看来还是得先了解基础啊
Havee
2016-04-21 17:28:42 +08:00
那不如直接 hexo generate 2>/dev/null
接着$?捕获这条信息的状态码....
但是没玩过 hexo ,不清楚 hexo 的错误输出信息是否含 ERROR

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/273400

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX