我遇到了bash脚本的问题。基本上,在我的脚本中我运行命令
bjobs -u $1
$ 1是脚本参数,它是我的集群上用户的id。如果用户$ 1在群集上没有正在运行/挂起的作业,则bjobs打印
No unfinished jobs found
到stdout。此外,退出状态为255.如果用户$ 1确实有作业,bjobs打印:
JOBID USER STAT QUEUE FROM_HOST EXEC_HOST JOB_NAME SUBMIT_TIME
45823 .......
45824 .......
.
.
并退出状态为0.我希望awk解析bjobs的输出。我试过了
bjobs -u $1 | awk '...'
其中'...'是我的awk解析程序。这不能很好地工作,因为显然当用户$ 1没有正在运行/挂起的作业时,字符串“找不到未完成的作业” 不 传递给awk。
也是如此bjobs -u $1 > foo
awk '...' foo
有什么建议吗?
答案 0 :(得分:4)
也许这条消息(我猜是一种错误)来到STDERR而不是STDOUT。
您可以使用>重定向bash中的IO流文件描述符,2是STDERR。
尝试:
bjobs -u $1 2>&1 | awk '...'
看看能否解决这个问题。 2>& 1部分意味着将STDERR(2)重定向到STDOUT(1),STDOUT是通过管道传输到awk的内容。
答案 1 :(得分:1)