我有一个需要大量用户输入的fortran程序。我编写了一个命令文件来处理代码中的大多数read(,)语句。然而,在某些时候,fortran代码进入do循环,我希望读取(,)命令然后被引导到终端,以便我可以手动输入它们而不是从输入。命令文件。有这么便宜和讨厌的方法吗?
我目前使用here文档格式来提供代码中read(,)语句的答案,但我只是不确定如何从shell脚本切换.command脚本而不会终止程序。我在下面做了一个简单的例子来说明问题...
例如(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,这样的事情是可行的吗?
答案 0 :(得分:0)
您可以嵌入一个命令替换,读取并输出一个值到这里的文档。
./a.out <<EOF
10
$(read X; echo "$X")
EOF
或者,您可以使用小脚本将Fortran程序直接写入标准输入,并在必要时调用read
。
{ echo 10;
read B;
echo "$B"; } | a.out