+ -
当前位置:首页 → 问答吧 → 如何使用if判断一个命令有错误输出?

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

时间:2010-04-14

来源:互联网

如题,
1.不判断errorlevel,因为有些命令有无错误输出 errorlevel均为0
2.不想让"错误输出"出现在终端,只让其他输出到终端
3.不设置辅助的环境变量

不知如何实现

作者: 沙漠之子   发布时间: 2010-04-14

if blabla 2>&1 | grep xxx &>/dev/null; then
...
fi

?

作者: bearson   发布时间: 2010-04-14

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

作者: 沙漠之子   发布时间: 2010-04-14

$?

字数补丁

作者: kevinlei   发布时间: 2010-04-15

引用:
作者: 沙漠之子
PHP 代码:
if yaour -Qo "$@" 2>&1 | grep 错误 &>/dev/null  ; then
    echo pkgfile "$@"
    pkgfile "$@"
fi 
不行亚 ,原想输出的信息被屏蔽了,而且then后的东东还是会运行(即判断无效)
改成
PHP 代码:
if yaour -Qo "$@" 2> grep 错误  ; then
    echo pkgfile "$@"
    pkgfile "$@"
fi 
想输出的信息能输出了,但是then后的东东还是会运行
-,- 你知道 | 和 > 都是做什么的吗?

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

如果想要看 grep 结果的话,把 &> /dev/null 去掉就好了

作者: bearson   发布时间: 2010-04-15

正常情况:
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 
使用这段代码,并不输出
"/usr/bin/file 属于 file 5.04-2"呀

作者: 沙漠之子   发布时间: 2010-04-18

经过反复测试
PHP 代码:
    if ! pacman -Qo "$@" 2>&1 | grep 属于  ; then
        echo pkgfile "$@"
        pkgfile "$@"
    fi 
能实现想要的结果,不知又没更好的写法

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

如果也将这个整合到一起

作者: 沙漠之子   发布时间: 2010-04-18