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

时间:2017-08-08 15:25:32

标签: linux bash echo cat

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

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

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

2 个答案:

答案 0 :(得分:2)

此处的文档不会将内容作为命令运行,只会扩展const sleep = timeout => new Promise(resolve => setTimeout(() => resolve(), timeout)); const myPosts = [1,2,3]; const fetchPosts = async () => { for (let post_id of myPosts) { await sleep(1000); // simulate fetch post console.log('post:', post_id); } console.log('done!'); }; fetchPosts();等值。

$RESULT

如果你想真正得到一个命令的输出,你可以使用cat> input.in<<EOF bla bla $RESULT EOF 但显然这对于​​$(mycommand myarg)来说毫无意义

答案 1 :(得分:1)

也许我没有正确地阅读此内容(如果是这样道歉),但看起来您希望将heredoc作为脚本运行。它不是。它只是创建并输入到input.in和字符串&#39; echo&#39;包含在该输出中。

尝试删除字符串&#39; echo&#39;来自heredoc(我假设你的perl输出以令牌K_POINTS开头)。

即:

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

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