2016-01-21 42 views
0

我試圖使用ifort -v命令提取Fortran編譯器的版本,然後grep它檢查版本。使用BSD grep捕獲stdout(可能)grep

但是這不起作用。

%ifort -v 
ifort version 16.0.1 
%ifort -v | grep "version" 
ifort version 16.0.1 
%ifort -v | grep "xyz" 
ifort version 16.0.1 

看起來好像輸出是打印出來的,不管我的模式如何。所以爲了測試它,我嘗試了下面的重定向到null,它仍然打印。它似乎喜歡輸出不會到標準輸出。

%ifort -v > /dev/null 
ifort version 16.0.1 


%ifort -v 2>/dev/null 
ifort: error #10236: file not found: '2' 
ifort version 16.0.1 

是否有可能,我在外殼看到的信息實際上是由於執行ifort指令以不同的工藝比目前的筆試和那我無法捕捉到它的原因是什麼? 我怎樣才能捕捉到這個和grep呢?

+0

你可以試試ifort -v 2>/dev/null嗎? – Michal

+0

編輯爲包含重定向stderr。似乎ifort有不同的執行命令的方式。 –

+0

你的shell是什麼?你可以執行echo $ 0 – Michal

回答

0

顯然ifort -v寫入stderr。在bash重定向stderrstdout有幫助。然後可以使用ifort -v 2>&1 | awk '{ print $2}'獲得該版本。

它看起來是不是trivial對(T)CSH重定向到stderrstdoutcsh家庭炮彈是不是well suited的腳本。

+1

'ifort -v |&...'可能更可取。 – francescalus