2016-01-21 114 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