V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
EvanQu
V2EX  ›  问与答

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

  •  
  •   EvanQu · 2016-04-21 16:12:32 +08:00 · 1914 次点击
    这是一个创建于 3142 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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是交给一个计划任务处理的

    9 条回复    2016-04-21 17:28:42 +08:00
    Havee
        1
    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
        2
    EvanQu  
    OP
       2016-04-21 16:49:39 +08:00
    @Havee 刚重新检查了代码 发现 res=`hexo generate|grep ERROR` 这句话 捕获不到错误信息。。。
    hexo generate 输出的 INFO 信息可以捕获 ERROR 信息捕获不了 不知道为什么
    Havee
        3
    Havee  
       2016-04-21 16:54:25 +08:00
    @EvanQu 你应该将 hexo generate 的输出重定向到一个文件,再去判断
    EvanQu
        4
    EvanQu  
    OP
       2016-04-21 17:03:06 +08:00
    @Havee 我把 hexo generate echo 出来后发现 全是 INFO 的信息 没有 ERROR
    Havee
        5
    Havee  
       2016-04-21 17:09:31 +08:00
    @EvanQu 那不是表示正常么...
    fangdingjun
        6
    fangdingjun  
       2016-04-21 17:19:21 +08:00   ❤️ 1
    hexo generate 2>&1|grep ERROR
    复习 shell 基础中的关于 stdout, stderr 部分
    ooxxcc
        7
    ooxxcc  
       2016-04-21 17:25:56 +08:00
    2>&1

    楼上已经解释了
    EvanQu
        8
    EvanQu  
    OP
       2016-04-21 17:28:34 +08:00
    @fangdingjun 谢谢 我没学过 shell 是一边 google 一遍写的 看来还是得先了解基础啊
    Havee
        9
    Havee  
       2016-04-21 17:28:42 +08:00
    那不如直接 hexo generate 2>/dev/null
    接着$?捕获这条信息的状态码....
    但是没玩过 hexo ,不清楚 hexo 的错误输出信息是否含 ERROR
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3057 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:36 · PVG 22:36 · LAX 06:36 · JFK 09:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.