bash脚本:执行命令并将其输出传递给尴尬



我有bash脚本问题。基本上,在我的脚本中,我运行命令

bjobs -u $1

$ 1是脚本参数,它是我群集上用户的ID。如果用户$ 1在集群上没有运行/未决作业,则Bjobs打印

 No unfinished jobs found

to stdout。另外,退出状态为255。如果用户$ 1确实有工作,则Bjobs打印:

JOBID   USER    STAT  QUEUE      FROM_HOST   EXEC_HOST   JOB_NAME   SUBMIT_TIME
45823   .......
45824   .......
.
.

和退出状态为0。我想尴尬地解析Bjobs的输出。我尝试了

bjobs -u $1 | awk '...'

哪里'...'是我的尴尬解析程序。这不太好,因为显然,当用户$ 1没有运行/待处理作业时,"未找到的未完成作业"的字符串是不是传递给AWK的。

也是如此
bjobs -u $1 > foo
awk '...' foo 

有什么建议?

也许该消息(我想是一种错误),而不是Stderr。

您可以在bash中重定向io流>文件描述符,而2个为stderr。

尝试:

bjobs -u $1 2>&1 | awk '...'

看看是否为您解决。2>& 1零件意味着将stderr(2)重定向到stdout(1),而stdout是将其输送到尴尬中的。

更多信息:http://www.tldp.org/ldp/abs/html/io-redirection.html

bjobs可能打印"未找到未完成的作业"。

将2>& 1添加到stderr。

有关bash io重定向的更多信息

相关内容

  • 没有找到相关文章