如何在 EOF 中使用 grep 输出?
How to use grep output in EOF?
我是新来的学习者,我是 运行 具有以下脚本的程序:
./Multiwfn >HF-Dr.out << EOF
HF.fchk
3
21
2
2
grep 'Global surface minimum:' HF-ESP.out | awk '{print ,,,,,}'
EXIT
EOF
这个 grep 的输出是这样的:
0.043532 -0.032964 1.960094 0.043532 -0.032964 1.960094
我想在脚本中使用 grep 的输出而不是输入,即我想要这样的脚本:
./Multiwfn >HF-Dr.out << EOF
HF.fchk
3
21
2
2
0.043532 -0.032964 1.960094 0.043532 -0.032964 1.960094
EXIT
EOF
有什么方法可以隐藏(使不可执行)程序中的 grep 输入并只使用它的输出吗?先感谢您。
我不明白你问题的 'make non-executable' 部分。据我了解,您希望它在提供给 ./Multiwfn
.
之前执行
有几种解决方法:
1) PesaThe 的评论:
./Multiwfn >HF-Dr.out << EOF
HF.fchk
3
21
2
2
$(grep 'Global surface minimum:' HF-ESP.out | awk '{print ,,,,,}')
EXIT
EOF
2) 在管道中创建输入:
(echo -e "HF.fchk\n3\n21\n2\n2;grep 'Global surface minimum:' HF-ESP.out | awk '{print ,,,,,}';echo EXIT) | ./Multiwfn >HF-Dr.out
3) 使用中间文件:
cat > file <<EOF
HF.fchk
3
21
2
2
EOF
grep 'Global surface minimum:' HF-ESP.out | awk '{print ,,,,,}' >> file
echo EXIT >> file
./Multiwfn < file >HF-Dr.out
rm file
我相信还有更多方法,但这应该会让您走上正轨。
我是新来的学习者,我是 运行 具有以下脚本的程序:
./Multiwfn >HF-Dr.out << EOF
HF.fchk
3
21
2
2
grep 'Global surface minimum:' HF-ESP.out | awk '{print ,,,,,}'
EXIT
EOF
这个 grep 的输出是这样的:
0.043532 -0.032964 1.960094 0.043532 -0.032964 1.960094
我想在脚本中使用 grep 的输出而不是输入,即我想要这样的脚本:
./Multiwfn >HF-Dr.out << EOF
HF.fchk
3
21
2
2
0.043532 -0.032964 1.960094 0.043532 -0.032964 1.960094
EXIT
EOF
有什么方法可以隐藏(使不可执行)程序中的 grep 输入并只使用它的输出吗?先感谢您。
我不明白你问题的 'make non-executable' 部分。据我了解,您希望它在提供给 ./Multiwfn
.
有几种解决方法:
1) PesaThe 的评论:
./Multiwfn >HF-Dr.out << EOF
HF.fchk
3
21
2
2
$(grep 'Global surface minimum:' HF-ESP.out | awk '{print ,,,,,}')
EXIT
EOF
2) 在管道中创建输入:
(echo -e "HF.fchk\n3\n21\n2\n2;grep 'Global surface minimum:' HF-ESP.out | awk '{print ,,,,,}';echo EXIT) | ./Multiwfn >HF-Dr.out
3) 使用中间文件:
cat > file <<EOF
HF.fchk
3
21
2
2
EOF
grep 'Global surface minimum:' HF-ESP.out | awk '{print ,,,,,}' >> file
echo EXIT >> file
./Multiwfn < file >HF-Dr.out
rm file
我相信还有更多方法,但这应该会让您走上正轨。