我正在尝试使用ifort -v命令提取fortran编译器的版本,然后使用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,但它仍然打印出来。看起来输出不会发送到stdout。
%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有没有可能我在shell中看到的信息实际上是由与当前正在执行的ifort命令不同的进程写入的,这就是我无法捕获它的原因?我如何捕获它并对其进行grep?
发布于 2016-01-22 03:26:14
显然,ifort -v会写入stderr。在bash上,将stderr重定向到stdout有助于解决这一问题。然后,例如,可以使用ifort -v 2>&1 | awk '{ print $2}'来获得版本。
在(t)csh上将stderr重定向到stdout似乎不是trivial,csh系列shells也不是用于脚本编写well suited。
https://stackoverflow.com/questions/34931900
复制相似问题