我有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重定向的更多信息