新手问题 Linux shell 问题,求解

donychen · 2015年06月04日 · 最后由 donychen 回复于 2015年06月05日 · 1868 次阅读

大家好! 我在写脚本时候遇到一个问题: 执行一个脚本,比方:update.sh 这个脚本会由于环境的一些原因,出现两种不同的输出。 如果正确的情况下:程序输出一个进度条“...........”类似这样。 错误的情况下,会出现类似“ERROR"这样的结果。

但是程序执行后,echo $?总是 0 我尝试用 expect 来拿不同的结果,但是感觉力不从心,expect 更倾向于解决交互性输入的问题,在这里感觉不是很好用。 有没有大神了解这种情况下,我应该怎么根据不同的输出,得出不同的结果呢?

非常感谢!

用 exit builtin 或者在函数里面可以用 return

#!/bin/bash

if something is ok; then
  exit 0
else
  exit 1 # any non-zero integer, which is less than 128
fi

如果你安装有 MySQL,可以使用命令 perror <n> 来查看通常惯用的错误代码的含义

#1 楼 @lululau 非常感谢您的回答。不好意思我帖子里忘记说了,那个 update.sh 的脚本里面的东西我不能动,我只能执行。 由于权限不够(这个是别的组产品里的一个脚本),我只能通过程序输出判断是否成功。还是很感谢!

#2 楼 @donychen

可以执行 update.sh 得到的输出来判断

status=`sh update.sh`
if [ ${status} == 'ERROR' ] ; then
         echo 'Error'
else
         echo '......'
fi

#3 楼 @minix 非常感谢,说的很对。可以先把结果存在一个字符中,然后再用正则表达式来匹配。果然高,谢谢

需要 登录 后方可回复, 如果你还没有账号请 注册新账号