我在bash中有一个小脚本,用于检查服务器是否为cPanel服务器
#!/bin/bash
echo "checking"
x=$(/usr/local/cpanel/cpanel -V)
if [ "$x" ]; then
echo "yes"
else
echo "no"
fi
这样可以正常工作并提供正确的预期输出。但是,在非cPanel服务器上运行时,它还会引发以下错误:
./testcpanel.sh: line 2: /usr/local/cpanel/cpanel: No such file or directory
我想抑制这个输出。
我尝试在变量声明中插入2>&1 /dev/null
,但这不起作用。无论cPanel是否存在,它总是以yes
作为输出。
如何抑制输出? (操作系统在 - CentOS 6和Ubuntu 13.04上测试)
答案 0 :(得分:5)
更改以下行
x=$(/usr/local/cpanel/cpanel -V)
到
x=$(/usr/local/cpanel/cpanel -V 2>/dev/null)
这样说 supress 错误消息(实际上将其重定向到/dev/null
)。
另外,说
if [ -z "$x" ]; then
代替。在变量声明中插入2>&1 /dev/null
后,您将STDERR
重定向到STDOUT
,并使变量包含:./testcpanel.sh: line 2: /usr/local/cpanel/cpanel: No such file or directory
,因为您收到了yes
。