首页 > 解决方案 > 如何在 bash 文件中使用 cat 和 EOF

问题描述

我有一个 bash 文件,我想在我的 bash 文件中使用下面的文本来生成一个新文件 run.sh。

所以我尝试过的是

cat > run.sh << EOF
case="NONE"
for i in 300.0000 500.0000
do
 awk '$3<0.0{print $0}' $NONE.eff |  grep $i  |  awk '{print $3*(-1), $7/(4.485E-32)}' > eff"$i"_E.dat
 awk '$3>0.0{print $0}' $NONE.eff |  grep $i  |  awk '{print $3, $7/(4.485E-32)}' > eff"$i"_H.dat
done
EOF

使用上面的 cat 和 EOF 命令,我得到了一个 run.sh 文件,但是 run.sh 文件中缺少变量(所有带有 $ 符号的值)。我得到的是

case="NONE"
for i in 300.0000 500.0000
do
 awk '<0.0{print ELF.sh}' .eff |  grep   |  awk '{print *(-1), /(4.485E-32)}' > eff""_E.dat
 awk '>0.0{print ELF.sh}' .eff |  grep   |  awk '{print , /(4.485E-32)}' > eff""_H.dat

done

我想要得到的是

case="NONE"
for i in 300.0000 500.0000
do
 awk '$3<0.0{print $0}' $NONE.eff |  grep $i  |  awk '{print $3*(-1), $7/(4.485E-32)}' > eff"$i"_E.dat
 awk '$3>0.0{print $0}' $NONE.eff |  grep $i  |  awk '{print $3, $7/(4.485E-32)}' > eff"$i"_H.dat
done

标签: bashcat

解决方案


推荐阅读