Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何添加shell命令并在Fortran程序中使用结果?_Shell_Fortran - Fatal编程技术网

如何添加shell命令并在Fortran程序中使用结果?

如何添加shell命令并在Fortran程序中使用结果?,shell,fortran,Shell,Fortran,可以从Fortran脚本调用shell命令吗 我的问题是我分析了很大的文件。这些文件有很多行,例如84002或类似的行。 在开始分析之前,我需要知道文件有多少行,因此我通常使用shell命令:wc-l“filename”,然后在脚本中将该数字用作一个变量的参数 但是我想从我的程序中调用这个命令,使用行数并将其存储到变量值中 我知道这可能不起作用,但如果起作用,请让我知道。您应该能够做类似的事情(未经测试-自1984年以来我就没有写过FORTRAN): command='wc-lwc.txt' 呼

可以从Fortran脚本调用shell命令吗

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

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


我知道这可能不起作用,但如果起作用,请让我知道。

您应该能够做类似的事情(未经测试-自1984年以来我就没有写过FORTRAN):

command='wc-lwc.txt'
呼叫系统(命令)
打开(单位=nn,文件=wc.txt')
读取(nn,*)计数

自1984年以来,实际上在2008年的标准中,但大多数常见的Fortran编译器(包括
gfortran
)都已经实现了,有一个标准的内部子例程
execute\u command\u line
,它的功能与广泛实现但非标准的子例程
系统
差不多。正如@MarkSetchell(几乎)所写的,您可以尝试一下

CALL execute_command_line('wc -l < file.txt > wc.txt' ) 
OPEN(unit=nn,file='wc.txt') 
READ(nn,*) count 
调用执行命令行('wc-lwc.txt')
打开(单位=nn,文件=wc.txt')
读取(nn,*)计数

Fortran所没有的是一种标准的方法,可以在不依赖于操作系统的情况下获得文件中的行数。其他,即打开文件,计算行数,然后倒带到文件开头开始读取。

您可以将行数输出到文件(fort.1)

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

read (1,*) count
然后可以循环变量计数并读取整个文件

do 1,count 
read (file,*) 

system
命令不是标准fortran,应避免使用。有些编译器没有它,有些则使用
sh
。建议使用
执行命令行
read (1,*) count
do 1,count 
read (file,*)