使用echo命令将值传递给交互式fortran程序

使用echo命令将值传递给交互式fortran程序,fortran,Fortran,fortran程序需要以交互方式传递三个输入: 第一个输入是字母“D”,第二个输入是文件“a.cpt”,第三个输入是输出文件的名称,例如“B.out” 我一直在尝试使用echo命令,但它不起作用: echo "D\nA.cpt\nB.out" | ./fortran_program 有什么想法吗 更新: 当使用EOF时,如下所示,程序将进入一个无限循环,重复以下几行: Please try again! Please enter input binary hydra/quanta plot

fortran程序需要以交互方式传递三个输入:

第一个输入是字母“D”,第二个输入是文件“a.cpt”,第三个输入是输出文件的名称,例如“B.out”

我一直在尝试使用echo命令,但它不起作用:

echo "D\nA.cpt\nB.out" | ./fortran_program 
有什么想法吗

更新

当使用EOF时,如下所示,程序将进入一个无限循环,重复以下几行:

Please try again!
Please enter input binary hydra/quanta plot (old) filename
defaults <dotsurface_0_165.qpt> ext:<.qpt> (abort by EXIT or ^D) :  Sorry unable to open file: D.qpt
               or file: D
Please try again!
Please enter input binary hydra/quanta plot (old) filename
defaults <dotsurface_0_165.qpt> ext:<.qpt> (abort by EXIT or ^D) :  Sorry unable to open file: D.qpt
请重试!
请输入二进制hydra/quanta绘图(旧)文件名
默认ext:(通过退出或^D中止):抱歉,无法打开文件:D.qpt
或文件:D
请再试一次!
请输入二进制hydra/quanta绘图(旧)文件名
默认ext:(通过退出或^D中止):抱歉,无法打开文件:D.qpt
此程序的源代码位于Github上,如果有帮助:


如果您使用的是
bash
(或类似),我认为
echo-e
printf
将非常有用(但也请检查)。例如,两个

echo -e "D\nA.cpt\nB.out" | ./a.out
printf "D\nA.cpt\nB.out" | ./a.out
给予

(对于从下面的
test.f90
生成的
a.out
)。另一种方法可能是使用,例如


如果您正在使用
bash
(或类似),我认为
echo-e
printf
将非常有用(但也请检查)。例如,两个

echo -e "D\nA.cpt\nB.out" | ./a.out
printf "D\nA.cpt\nB.out" | ./a.out
给予

(对于从下面的
test.f90
生成的
a.out
)。另一种方法可能是使用,例如


或者,可以在echo命令中使用实际换行符:

user@host$ echo "1                             
2
3" | ./test_echo 
           1           2           3
user@host$ 

当您在echo“1”之后键入“enter”时,可以继续输入引号分隔的字符串。

或者,您可以在echo命令中使用实际的换行符:

user@host$ echo "1                             
2
3" | ./test_echo 
           1           2           3
user@host$ 

当您在
echo“1
之后键入“enter”时,可以继续输入引号分隔的字符串。

内部函数
get_command_参数
是否可以满足您的需要,或者是否需要使用(bash)?当键入
D
时,程序需要一个文件名作为下一个参数<代码>输入,例如,对于文件
input.qpt
。您的第二个参数是
A
,程序将查找文件
A.qpt
。内在函数
get_command_参数
是否满足您的需要,或者是否有必要使用(bash)?键入
D
时,程序期望文件名作为下一个参数<代码>输入,例如,对于文件
input.qpt
。第二个参数是
A
,程序将查找文件
A.qpt
user@host$ echo "1                             
2
3" | ./test_echo 
           1           2           3
user@host$