在 cat 文件的输出中打印单词 echo

Printing the word echo in the output of cat file

我正在尝试使用 bash 中的 cat 生成一个文件,在 bash 中,我已经 运行 一个脚本,我将其保存到一个变量中,然后将在其中使用那只猫。为了 运行 脚本并将输出保存到变量,我使用了以下内容:

declare RESULT=$(./script.pl 5 5 5)

接下来,我展示了使用变量 RESULT 的 cat 文件的摘录。

  cat> input.in<<EOF 
  bla bla
  echo $RESULT 
  EOF

我在运行和bash之后得到的是变量RESULT的正确输出。但是,文件开头有一个字回显(如下图)。这是有问题的,因为我正在尝试使代码自动化,而添加单词 echo 会破坏代码。

echo K_POINTS crystal    
     64
     0.00000000  0.00000000  0.00000000  1.562500e-02 
     0.00000000  0.00000000  0.25000000  1.562500e-02 
     0.00000000  0.00000000  0.50000000  1.562500e-02

你能告诉我问题是什么吗?非常感谢!

这里的文档不会运行将内容作为命令,它们只是扩展值,如$RESULT

cat> input.in<<EOF 
bla bla
$RESULT 
EOF

如果你想真正得到命令的输出,你可以使用$(mycommand myarg),但显然这对echo

毫无意义

也许我没有正确阅读这篇文章(如果是这样的话,我们深表歉意),但看起来您希望 heredoc 成为 运行 作为脚本。它不是。它刚刚创建并被分类为 input.in,字符串 'echo' 包含在该输出中。

尝试从 heredoc 中删除字符串 'echo'(我假设您的 perl 输出以标记 K_POINTS 开头)。

即:

declare RESULT=$(./script.pl 5 5 5)

cat> input.in<<EOF 
  bla bla
  $RESULT 
  EOF