无法抑制shell脚本中的输出

时间:2015-06-04 04:59:03

标签: bash shell

我正在使用以下代码来执行操作。但每次" ldap_bind:凭证无效(49)"正在打印机上打印。我不希望它在控制台上打印,而应该被抑制。怎么实现呢? 代码:

LDAP_CONF="/etc/opt/nokia/ldapserver.conf"
bindError="ldap_bind: Invalid credentials (49)"
basedn=`cat $LDAP_CONF | grep basedn | cut -d " " -f2`
verify=`su - omc -c "ldapsearch -x -n -D 

"uid=$userName,ou=people,ou=accounts,$basedn" -w $newPswd"`

if echo "$verify" | grep -q "$bindError"; then
    printPasswdLog "${ERR}" "bind to ldap server failed"
else
    printPasswdLog "${INF}" "bind to ldap server Successful for $userName "
fi

我得到以下输出:

ldap_bind:凭据无效(49) 3月3日星期三12:45:56 EEST 2015 |信息|绑定到ldap服务器成功用于nwi3system

2 个答案:

答案 0 :(得分:1)

如果你真的想要压制所有错误信息,只需将它放在脚本的开头:

exec 2> /dev/null

但你真的不想这样做。这可能就足够了:

verify=$(su - omc -c "ldapsearch -x -n -D 

uid=$userName,ou=people,ou=accounts,$basedn -w $newPswd" 2> /dev/null)

但你也不想这样做。为什么要丢弃一个非常好的错误消息,用一个包含较少信息的消息替换它?

答案 1 :(得分:0)

您可以将错误重定向到其他文件或/dev/null。你可以用这种方式

./SCRIPT 2> /dev/null

这会将错误重定向到/ dev / null,并且没有记录会出错。

相反,更好的方法是将它记录在某个地方。试试这个

./SCRIPT 2>> error.txt

这将创建一个文件,所有错误都将记录在那里。