我正在尝试创建一个 shell 脚本,它多次通过程序并计算一些物理参数。该程序在控制台中使用“./radex”打开,然后要求我输入一些值(例如,它询问我文件名、输出文件名、动能温度等)。它计算这些值,最后询问我是否想要继续计算(输入1)或停止(输入0)。我能够制作一个看起来像这样的脚本
#!/bin/bash
index_array=(50 60 70)
for i in ${index_array[@]}
do
./radex<<EOF
CF_all_coll.dat
Testy2.dat
200 210
$i
1
H2
100
2.73
3e12
1
0
EOF
done
这使得创建多个文件成为可能,但为了仅创建 1 个文件,我需要给出“1”而不是“0”作为最后一个输入。然而,当我这样做时,它不起作用可能是因为它再次调用 ./radex,所以有没有办法
非常感谢任何帮助!
你的意思是:
for i in "${index_array[@]}"; do
cat <<EOF
CF_all_coll.dat
Testy2.dat
200 210
$i
1
H2
100
2.73
3e12
1
0
EOF
done | ./radex
首先生成它,查看它以进行调试,然后重定向可能会更简单。
input=$(
for i in "${index_array[@]}"; do
cat <<EOF
CF_all_coll.dat
Testy2.dat
200 210
$i
1
H2
100
2.73
3e12
1
0
EOF
done
)
echo "$input" # Is it correct?
./radex <<<"$input"
# or echo "$input" | ./radex