bash 脚本中的多个 Fortran 参数

Multiple Fortran arguments in bash script

我需要 运行 一个具有不同参数的 Fortran(90) 程序。 Fortran 程序是交互式的,并顺序接收多个输入参数(它单独询问每个参数,即它们在不同的实例中读取)。

我的想法是编写一个简短的 bash 脚本来更改相关参数并自动完成这项工作。从命令行以下工作正常:

./program <<< $'parameter1\nparameter2\nparameter3'

尝试更改 bash 脚本中的参数时,一切都停止了。我的脚本如下:

#!\bin\bash

parameter1=1
parameter2=2
parameter3=3
inputstr=$parameter1'\n'$parameter2'\n'$parameter3

./program <<< $inputstr

输入的字符串($inputstr)是正确的字符串('parameter1\nparameter2\nparameter3'),但被bash解释为一个整体,即没有给出三个独立的参数给Fortran 程序(整个字符串被解释为参数 1)。

我尝试了几种将 inputstring 放在方括号、撇号或其他内容中的方法,但 none 似乎有效。

有没有办法让这项工作自动进行?

您仍然必须使用 $'...' 引号在 inputstr 的值中嵌入文字换行符。

#!/bin/bash

parameter1=1
parameter2=2
parameter3=3
inputstr=$parameter1$'\n'$parameter2$'\n'$parameter3

./program <<< $inputstr

不过,您实际上并不需要使用 $'...' 引号。

#!/bin/bash

parameter1=1
parameter2=2
parameter3=3
inputstr="$parameter1
$parameter2
$parameter3"

./program <<< $inputstr

或者只是

#!/bin/bash

parameter1=1
parameter2=2
parameter3=3


./program <<EOF
$parameter1
$parameter2
$parameter3
EOF

这里的字符串很适合重复、交互使用;当您使用像样的编辑器编写一次脚本时,它们就没那么必要了。