如何使用文件输入运行 fortran77 程序?

如何使用文件输入运行 fortran77 程序?

我在终端中运行 fortran77 程序

./program

并且程序要求输入和输出文件。当文件中有输入和输出文件的名称(分为两列)时,我应该向终端写入什么?我想对文件中带有名称的所有行运行该程序。

或者 - 如何使用参数等输入信息运行程序?

或者如何直接在脚本中写入文件名?代替

READ(+,'(A)') OUT

答案1

我制作了以下程序文件prog.f

       program test

       character IN*30,OUT*30,line*80

       PRINT *,'Input file '
       READ(*,'(A)') IN
       OPEN(1,FILE=IN,STATUS='OLD')
       PRINT *,'Output file?'
       READ(*,'(A)') OUT
       OPEN(2,FILE=OUT,STATUS='NEW',BLANK='ZERO')


       read (1,'(a80)') line
       write (2,*) "I read ", line
       end

编译并链接它

gfortran prog.f -o prog

我将文本字符串放入输入文件中

echo "Hello World" > in

in然后我将输入文件和输出文件的名称发送out给程序

$ <<< 'in
out' ./prog
 Input file 
 Output file?

并检查输出文件

$ cat out
 I read Hello World                                                                     

<<<工作于bash.您可能更喜欢echo更便携的管道,

$ rm out
rm: remove normal file 'out'? y

$ echo 'in
out' | ./prog
 Input file 
 Output file?
$ cat out
 I read Hello World                                                                     

答案2

如果你幸运的话也许

<infile ./program  >outfile

将工作。重定向以提供文件描述符。选项/参数???


当我们地球人写出类似的东西时...

$ <77in cat >77.out
$ cat 77in >77.out

(这只是复制77in77.out

...这个 Fortran77 程序/命令想要它是操作数在一个输入文件/流中逐行:

$  <77.io cat
77in
77.out

现在,如果cat是其他内容,它会将第一行解析为输入文件(例如包含“hello\nworld”),将第二行解析为要创建的文件。

这似乎只是更新、简单的方法......


而不是像cp -a dir1 dir2 dest现在这样一个很长的参数列表<in_list cpa77

但是你需要一个额外的文件......就像现代一样cpio

<filelist cpio -o >files.cpio。当然cpio只需要 STDIN 行:

find . | cpio -o >files.cpio

cpio由于其功能,具有这种特殊的调用语法,可以处理许多文件。它是一个命令半。相同tar,但方式不同)

如果说有什么是 Unix 的典型特征的话,那就是在 shell 中向命令提供控制和数据的灵活性。正如我评论的:毕竟是好Q! (感谢接受的答案!)

相关内容