LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 588|回复: 6

如何使用if判断一个命令有错误输出?

[复制链接]
发表于 2010-4-13 21:38:11 | 显示全部楼层 |阅读模式
如题,
1.不判断errorlevel,因为有些命令有无错误输出 errorlevel均为0
2.不想让"错误输出"出现在终端,只让其他输出到终端
3.不设置辅助的环境变量

不知如何实现
发表于 2010-4-14 01:35:31 | 显示全部楼层
if blabla 2>&1 | grep xxx &>/dev/null; then
  ...
fi

?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-14 17:14:34 | 显示全部楼层
[PHP]if yaour -Qo "$@" 2>&1 | grep 错误 &>/dev/null  ; then
        echo pkgfile "$@"
        pkgfile "$@"
fi[/PHP]

不行亚 ,原想输出的信息被屏蔽了,而且then后的东东还是会运行(即判断无效)
改成
[PHP]if yaour -Qo "$@" 2> grep 错误  ; then
        echo pkgfile "$@"
        pkgfile "$@"
fi[/PHP]
想输出的信息能输出了,但是then后的东东还是会运行
回复 支持 反对

使用道具 举报

发表于 2010-4-15 11:19:59 | 显示全部楼层
$?

字数补丁
回复 支持 反对

使用道具 举报

发表于 2010-4-15 15:17:18 | 显示全部楼层
Post by 沙漠之子;2082814
[PHP]if yaour -Qo "$@" 2>&1 | grep 错误 &>/dev/null  ; then
        echo pkgfile "$@"
        pkgfile "$@"
fi[/PHP]

不行亚 ,原想输出的信息被屏蔽了,而且then后的东东还是会运行(即判断无效)
改成
[PHP]if yaour -Qo "$@" 2> grep 错误  ; then
        echo pkgfile "$@"
        pkgfile "$@"
fi[/PHP]
想输出的信息能输出了,但是then后的东东还是会运行

-,- 你知道 | 和 > 都是做什么的吗?

你给的第二段代码会判断 yaourt 是否正常结束,并且应该会把输出写到 'grep' 这个文件里面的吧

如果想要看 grep 结果的话,把 &> /dev/null 去掉就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-18 13:43:40 | 显示全部楼层
正常情况:
yaour -Qo file  
输出为
/usr/bin/file 属于 file 5.04-2 -->想要输出
错误情况:
yaour -Qo file1
错误:无法读取文件 'file1': 没有那个文件或目录 -->不想输出

[php]
if yaour -Qo "$@" 2>&1 | grep 错误 &>/dev/null  ; then
    echo pkgfile "$@"
    pkgfile "$@"
fi
[/php]
使用这段代码,并不输出
"/usr/bin/file 属于 file 5.04-2"呀
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-18 14:10:20 | 显示全部楼层
经过反复测试
[php]
        if ! pacman -Qo "$@" 2>&1 | grep 属于  ; then
                echo pkgfile "$@"
                pkgfile "$@"
        fi
[/php]
能实现想要的结果,不知又没更好的写法

再问一下:
如果pkgfile "$@"返回为空,则向终端输出no find in pkgfile's database.

如果也将这个整合到一起
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表