首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分别为shell和程序重定向STDERR

分别为shell和程序重定向STDERR
EN

Server Fault用户
提问于 2012-06-13 16:19:22
回答 2查看 220关注 0票数 2

我正在进行一些审计自动化,这个例子描述了检查Java版本,尽管其他程序也做了同样的事情。

"java -version“的输出转到STDERR,这很容易重定向,但我希望将shell错误(例如,当缺少java二进制文件时)发送到/dev/null。壳重定向似乎是一个完全或无意义的命题。

迄今为止,我最有希望的尝试是:

代码语言:javascript
复制
{ /bin/ksh "{java -version 2>&1;}"; } 2>/dev/null

...which正确地将-version命令的输出发送给STDOUT,但是如果java不存在,它也会向STDOUT发送shell "not“错误。我不想看到那个消息。

同样的行为:

代码语言:javascript
复制
{ /bin/ksh "{java -version 2>&1;}" 2>/dev/null; }

有没有人知道如何限制重定向的范围,从而使每个进程都有自己的?我不限于ksh,但出于环境原因,它必须是一个基于shell的一行程序。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2012-06-13 16:39:58

是否不可能检查java是否被找到和可执行?

代码语言:javascript
复制
test -x "$(which java)" && java -version 2>&1

或者,如果您也想绕过测试并检查java-错误的话。

代码语言:javascript
复制
java -version 2>/dev/null 1>/dev/null && java -version 2>&1
票数 1
EN

Server Fault用户

发布于 2012-06-13 17:34:39

您可以重定向到其他描述符。这是给bash的,我认为它也适用于ksh:

代码语言:javascript
复制
exec 3>javalog
java ... 2>&1 >&3
exec 3>&-
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/398361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档