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

Arr*_*ara 7 shell bash fortran

我在终端运行 fortran77 程序

./program
Run Code Online (Sandbox Code Playgroud)

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

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

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

READ(+,'(A)') OUT
Run Code Online (Sandbox Code Playgroud)

sud*_*dus 8

我制作了以下程序文件 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
Run Code Online (Sandbox Code Playgroud)

编译并链接它

gfortran prog.f -o prog
Run Code Online (Sandbox Code Playgroud)

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

echo "Hello World" > in
Run Code Online (Sandbox Code Playgroud)

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

$ <<< 'in
out' ./prog
 Input file 
 Output file?
Run Code Online (Sandbox Code Playgroud)

并检查输出文件

$ cat out
 I read Hello World                                                                     
Run Code Online (Sandbox Code Playgroud)

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

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

$ echo 'in
out' | ./prog
 Input file 
 Output file?
$ cat out
 I read Hello World                                                                     
Run Code Online (Sandbox Code Playgroud)

  • @Arrara,不客气:-) (2认同)

小智 6

如果你幸运的话也许

<infile ./program  >outfile
Run Code Online (Sandbox Code Playgroud)

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


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

$ <77in cat >77.out
$ cat 77in >77.out
Run Code Online (Sandbox Code Playgroud)

(这只是复制77in77.out

...这个 Fortran77 程序/命令希望其操作数在一个输入文件/流中逐行:

$  <77.io cat
77in
77.out
Run Code Online (Sandbox Code Playgroud)

现在,如果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!(感谢接受的答案!)