2

我在 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变量声明,但这不起作用。yes无论 cPanel 是否存在,它总是作为输出给出。

我该如何去抑制输出?(操作系统在 CentOS 6 和 Ubuntu 13.04 上测试)

4

1 回答 1

5

更改以下行

x=$(/usr/local/cpanel/cpanel -V)

x=$(/usr/local/cpanel/cpanel -V 2>/dev/null)

这么说会抑制错误消息(实际上将其重定向到/dev/null)。

另外,说

if [ -z "$x" ]; then

反而。在插入2>&1 /dev/null变量声明后,您重定向STDERRSTDOUT并让变量包含类似的内容:./testcpanel.sh: line 2: /usr/local/cpanel/cpanel: No such file or directory因此您收到了一个yes.

于 2013-09-21T07:35:35.173 回答