我有两个命令,它们会在结果后回显我:
[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,那么我只会收到第一个结果“确定”
答案 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年使用反引号。