我正在进行一些审计自动化,这个例子描述了检查Java版本,尽管其他程序也做了同样的事情。
"java -version“的输出转到STDERR,这很容易重定向,但我希望将shell错误(例如,当缺少java二进制文件时)发送到/dev/null。壳重定向似乎是一个完全或无意义的命题。
迄今为止,我最有希望的尝试是:
{ /bin/ksh "{java -version 2>&1;}"; } 2>/dev/null...which正确地将-version命令的输出发送给STDOUT,但是如果java不存在,它也会向STDOUT发送shell "not“错误。我不想看到那个消息。
同样的行为:
{ /bin/ksh "{java -version 2>&1;}" 2>/dev/null; }有没有人知道如何限制重定向的范围,从而使每个进程都有自己的?我不限于ksh,但出于环境原因,它必须是一个基于shell的一行程序。
发布于 2012-06-13 16:39:58
是否不可能检查java是否被找到和可执行?
test -x "$(which java)" && java -version 2>&1或者,如果您也想绕过测试并检查java-错误的话。
java -version 2>/dev/null 1>/dev/null && java -version 2>&1发布于 2012-06-13 17:34:39
您可以重定向到其他描述符。这是给bash的,我认为它也适用于ksh:
exec 3>javalog
java ... 2>&1 >&3
exec 3>&-https://serverfault.com/questions/398361
复制相似问题