Python Suppress grep不匹配退出状态

Python Suppress grep不匹配退出状态,python,bash,return-code,Python,Bash,Return Code,我有一个python脚本,它运行了几次检查。其中一个检查是通过对关键字执行grep并确认没有输出来确保结果不包含关键字。读取grep手册页时,预期退出代码为1。但是从用户的角度来看,检查是通过的,因为关键字不存在。是否有一种方法可以在没有匹配命令的情况下返回grep的退出状态0,这样它就不会作为异常处理,或者有任何其他方法可以避免它作为异常处理?注意:用户将创建命令文件,因此我无法避免使用grep import subprocess def cmd_test(command):

我有一个python脚本,它运行了几次检查。其中一个检查是通过对关键字执行grep并确认没有输出来确保结果不包含关键字。读取grep手册页时,预期退出代码为1。但是从用户的角度来看,检查是通过的,因为关键字不存在。是否有一种方法可以在没有匹配命令的情况下返回grep的退出状态0,这样它就不会作为异常处理,或者有任何其他方法可以避免它作为异常处理?注意:用户将创建命令文件,因此我无法避免使用grep

import subprocess


    def cmd_test(command):
        try:
            cmd_output = subprocess.check_output(command,
                                                 stderr=subprocess.STDOUT,
                                                 shell=True,
                                                 timeout=120,
                                                 universal_newlines=False).decode('utf-8')
        except subprocess.CalledProcessError as exc:
            return (exc)
        else:
            return cmd_output.strip()

    print(cmd_test('env | grep bash'))
    print(cmd_test('env | grep test'))

print(cmd_test('env | grep bash'))
print(cmd_test('env | grep test'))
输出:

SHELL=/bin/bash
Command 'env | grep test' returned non-zero exit status 1 b''

grep在不匹配后返回出口1的示例,正常行为:

$ env | grep test
$ echo $?
1
抑制grep的返回值并强制0退出状态的示例:

$ env | { grep test || true; }
$ echo $?
0

试试这个。希望有帮助。

grep在没有匹配后返回出口1的示例,正常行为:

$ env | grep test
$ echo $?
1
抑制grep的返回值并强制0退出状态的示例:

$ env | { grep test || true; }
$ echo $?
0

试试这个。希望有帮助。

呃。。。只需检查异常对象中的退出代码?甚至直接使用
Popen
对象而不是
check\u foo()
Err。。。只需检查异常对象中的退出代码?或者直接使用
Popen
对象而不是
check\u foo()
您可以使用
操作符:您可以使用
运算符,如下所示: