【发布时间】:2015-02-08 21:28:37
【问题描述】:
我在做什么:
我有以下反引号命令,它在一个简单的 foreach 循环中执行并将命令输出保存到一个变量,然后我对该变量执行字符串匹配操作:
$ciphertestoutput = `echo -n | openssl s_client -cipher $tlsCipher -connect $ipaddress:443 2>/dev/null`;
问题:
但是,当我在输出中运行我的脚本时,我收到一条错误消息,我似乎无法停止出现。我并不担心错误的发生,但我不希望错误显示在我所做的漂亮命令行输出的中间。
我的输出和错误:
EXP-DES-CBC-SHA CIPHER IS SUPPORTED on 192.168.1.22:443
EXP-EDH-DSS-DES-CBC-SHA CIPHER IS NOT SUPPORTED on 192.168.1.22.443
EXP-RC2-CBC-MD5 CIPHER IS NOT SUPPORTED on 192.168.1.22:443
connect: Connection refused <--- the error I cant get rid of
connect:errno=111 <--- the error I cant get rid of
EXP-RC4-MD5 CIPHER IS NOT SUPPORTED on 192.168.1.22:443
我尝试过的:
我已经尝试并尝试了各种我知道的方式来抑制输出中的错误消息,但我没有尝试阻止此错误的出现。我过去做过很多类似的事情,从来没有遇到过反引号的问题。我在这里有什么明显的遗漏吗?
【问题讨论】:
-
使用
2>/dev/null是正确的方法。你确定它不起作用吗? -
是的,我肯定遇到了错误(如上所示),我认为 2>/dev/null 是正确的方法,这也是它让我感到困惑的原因。该错误只能来自此反引号命令,并且它是脚本正在执行的唯一“有意义”的事情(即脚本中没有其他面向连接或反引号命令)。所以我不明白为什么 2>/dev/null 没有捕捉到错误。
标签: bash perl error-handling output backticks