2017-08-08 63 views
1

我想在bash中使用cat生成一個文件,其中bash裏面,我已經運行了一個腳本,我保存到一個變量中,然後將在貓內部使用。要運行腳本並將輸出保存到一個變量,我用了以下內容:在貓文件的輸出中打印回聲

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

接下來,我告訴其中正在使用的變量RESULT貓文件的摘錄。

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

運行的bash後,我得到什麼,是可變的結果正確的輸出。但是,在文件(如下所示)的開頭處有一個字回顯。這是有問題的,因爲我試圖自動化代碼,並且添加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

這裏的文檔不會將這些內容作爲命令運行,它們只是擴展了像$RESULT這樣的值。

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

如果你想真正得到一個命令的輸出,你可以使用$(mycommand myarg),但顯然這是毫無意義的echo

1

也許我不是(如果是這樣的道歉)正確地讀這篇文章,但它看起來像你期待heredoc作爲腳本運行。不是這樣。它只是創建並cat'ed input.in,並且字符串'echo'包含在該輸出中。

嘗試從heredoc中刪除字符串'echo'(我假設您的perl輸出以標記K_POINTS開頭)。

即:

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

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