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
Bash 用户输入的一部分在命令文件中,另一部分在fortran脚本的终端中_Bash_Fortran - Fatal编程技术网

Bash 用户输入的一部分在命令文件中,另一部分在fortran脚本的终端中

Bash 用户输入的一部分在命令文件中,另一部分在fortran脚本的终端中,bash,fortran,Bash,Fortran,我有一个需要大量用户输入的fortran程序。我已经编写了一个命令文件来处理代码中的大多数读取语句。然而,在某个时刻,fortran代码进入一个do循环,我希望读取的命令随后被定向到终端,以便我可以手动输入它们,而不是从.command文件输入。有没有一种既便宜又讨厌的方法 我目前使用here文档格式提供代码中read语句的答案,但我不确定如何在不终止程序的情况下从.command脚本切换到shell脚本。我在下面举了一个简单的例子来说明这个问题 e、 g fortran脚本 { progra

我有一个需要大量用户输入的fortran程序。我已经编写了一个命令文件来处理代码中的大多数读取语句。然而,在某个时刻,fortran代码进入一个do循环,我希望读取的命令随后被定向到终端,以便我可以手动输入它们,而不是从.command文件输入。有没有一种既便宜又讨厌的方法

我目前使用here文档格式提供代码中read语句的答案,但我不确定如何在不终止程序的情况下从.command脚本切换到shell脚本。我在下面举了一个简单的例子来说明这个问题

e、 g fortran脚本

{

program testcommand

write(*,*) 'enter a: '

read(*,*) a

write(*,*) 'enter b: '

read(*,*) b


write(*,*) a, b

end program

}
然后,我使用命令文件运行这个脚本

{

gfortran gfrot.f90

./a.out <<< "

10

8

"

}

比如说,如果我想在脚本中指定a的值,然后在终端中指定b,这样做可行吗?

您可以嵌入一个命令替换,读取并输出一个值到here文档中

./a.out <<EOF
10
$(read X; echo "$X")
EOF

是否也可以在此处编写一份文档,在下面的脚本中说明n的第一个值,然后允许用户输入是否希望在终端中继续,即“nagain”的值。问题是我不知道有多少次我会回到起点。程序测试命令!要将数字1添加到n1,请编写脚本,'输入n:'读取,10 do i=1,n sum=sum+i enddo write,'总和是',n write,'您想再次执行1还是0?'读取,如果nagain==1转到1 end程序,格式很糟糕!基本上,我可以通过输入所有fortran输入,让here文档在中途写入屏幕吗?此外,在here文档中是否存在与goto等效的内容,即返回到脚本中的前一行并重复?您可能需要查看expect,它是为与交互式程序进行编程交互而设计的。此处的文档设计为动态文件,而不是脚本本身。我在第一个例子中展示的hack可能是在编写一个脚本来计算和输出另一个程序所期望的输入之前要做的事情。为什么不修改fortran以从文件中读取您想要的内容呢?
{ echo 10;
  read B;
  echo "$B"; } | a.out