C Shell:如何使用非命令行参数执行程序?
我的$SHELL是tcsh。我想运行一个c shell脚本,它会多次调用一个程序,每次都会更改一些参数。我需要调用的程序是Fortran语言。我不想编辑它。程序只在执行后接受参数,而不是在命令行上。在脚本中调用该程序时,该程序将获得控制权(这是我当前遇到的问题,我永远无法退出,因为在程序进程停止之前,脚本不会执行任何操作);在这一点上,我需要向它传递一些变量,然后经过几次迭代之后,我将需要将ctrl-c移出程序并继续使用脚本C Shell:如何使用非命令行参数执行程序?,shell,unix,scripting,csh,Shell,Unix,Scripting,Csh,我的$SHELL是tcsh。我想运行一个c shell脚本,它会多次调用一个程序,每次都会更改一些参数。我需要调用的程序是Fortran语言。我不想编辑它。程序只在执行后接受参数,而不是在命令行上。在脚本中调用该程序时,该程序将获得控制权(这是我当前遇到的问题,我永远无法退出,因为在程序进程停止之前,脚本不会执行任何操作);在这一点上,我需要向它传递一些变量,然后经过几次迭代之后,我将需要将ctrl-c移出程序并继续使用脚本 如何做到这一点?不是tcsh用户,但是如果程序运行后通过stdin读入
如何做到这一点?不是
tcsh
用户,但是如果程序运行后通过stdin
读入命令,那么您可以使用shell重定向Uhm,您可以为Fortran代码提供重定向吗?您可以使用输入创建一个临时文件,然后使用stdin重定向将其导入(您想要使用的是。要添加到@Toybuilder所说的内容中,您可以使用“here document”。即,您的脚本可以
./myfortranprogram << EOF
first line of input
second line of input
EOF
/myfortranprogram这是unix程序expect的一项工作,它可以友好、轻松地交互命令程序并响应它们的提示。在被告知我的问题几乎与此问题重复后,我被派到了这里
FWIW,我在cshcshell脚本中遇到了类似的问题
这段代码允许在不获取任何输入参数的情况下执行自定义_命令:
foreach f ($forecastTimes)
custom_command << EOF
arg1=x$f;2
arg2=ya
arg3=z,z$f
run
exit
EOF
end
foreach f($forecastTimes)
自定义命令哦,我忘了Expect!回答得很好!还有一些提示:不,事实证明,当你试图做只涉及编写代码的研究,而你所有的训练都只限于物理时,你会错过finner cs的细节。这是一种很多人都生活在其中的逆向编码方法。
foreach f ($forecastTimes)
custom_command <<EOF
arg1=x$f;2
arg2=ya
arg3=z,z$f
run
exit
EOF
end