重击:用“;”回显多个命令的结果

时间:2018-08-07 11:33:30

标签: bash

我有两个命令,它们会在结果后回显我:

[root@in SNMP]# /usr/protei/utils/SNMP/check_cpe.sh general;/usr/protei/utils/SNMP/check_cpe.sh smpp;
OK
VERY OK

接下来,我要在整个循环中形成此命令行,问题是,如何将这些命令的结果回显到控制台?

#!/bin/sh

RUN="/usr/protei/utils/SNMP/check_cpe.sh general;/usr/protei/utils/SNMP/check_cpe.sh smpp;"
RES=`$RUN`
echo "$RES"

什么也没给我。如果我在每个命令的末尾添加>> / dev / null,那么我只会收到第一个结果“确定”

1 个答案:

答案 0 :(得分:1)

如果要对两个命令的执行进行分组,请编写一个函数。

run() {
  /usr/protei/utils/SNMP/check_cpe.sh general
  /usr/protei/utils/SNMP/check_cpe.sh smpp
}

在Unix shell中,您有两个文件描述符:标准输出和标准错误。如果您已将标准输出重定向到/ dev / null,但仍看到“ OK”,则应用程序会将“ OK”写入标准错误。如果要结合标准错误和标准输出,请执行以下操作:

result=$(run 2>&1)

请勿在2018年使用反引号。