我遇到了bash腳本的問題。基本上,在我的腳本中,我運行命令bash腳本:執行命令並將其輸出傳遞給awk
bjobs -u $1
$ 1是腳本參數,它是我的羣集上用戶的ID。如果用戶$ 1在羣集上沒有運行/待處理作業,那麼bjob將打印
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
有什麼建議嗎?
'bjobs'是否真的將消息發送到標準輸出?它不是去stderr嗎? – choroba
嗨,@choroba,是的,它看起來像bjobs發送消息「沒有找到未完成的作業」stderr,而當它找到作業時,它寫入標準輸出。因此,將stderr重定向到stdout可以解決問題。 – DeltaIV