如何将shell命令添加到Fortran脚本中

时间:2014-10-24 17:34:36

标签: shell fortran

是否可以从Fortran脚本调用shell命令?

我的问题是我分析了很大的文件。这些文件有很多行,例如84084002或类似。 在开始分析之前,我需要知道文件有多少行,因此我通常使用shell命令:wc -l "filename",而不是在我的脚本中将此数字用作一个变量的参数。

但我想从我的程序中调用此命令并使用行数并将其存储到变量值中。

我知道,这可能不起作用,但如果确实如此,请告诉我。

3 个答案:

答案 0 :(得分:5)

自1984年以来,实际上是在2008年的标准中,但已经由大多数常见的Fortran编译器(包括gfortran实现),有一个标准的内在子程序execute_command_line,它大致具有广泛的作用。实现但非标准子程序system。由于@MarkSetchell已经(差不多)写了,你可以试试

CALL execute_command_line('wc -l < file.txt > wc.txt' ) 
OPEN(unit=nn,file='wc.txt') 
READ(nn,*) count 

Fortran没有的标准方法是获取文件中的行数而不依赖于上面那种依赖于操作系统的解决方法。其他,即打开文件,计算行数,然后倒回文件的开头开始阅读。

答案 1 :(得分:4)

你应该可以做这样的事情(未经测试 - 我自1984年以来就没有写过FORTRAN):

command='wc -l < file.txt > wc.txt' 
CALL system(command) 
OPEN(unit=nn,file='wc.txt') 
READ(nn,*) count 

答案 2 :(得分:0)

可以输出文件的行数(fort.1)

 wc -l file|awk '{print $1}' > fort.1

在您的 Fortran 程序中,您可以通过读取文件 fort.1 将行数存储到变量(例如计数)中:

read (1,*) count

然后您可以遍历变量计数并读取整个文件

do 1,count 
read (file,*)