2017-08-08 19 views
1

私はbashの中でcatを使ってファイルを生成しようとしていますが、すでにbashの中でスクリプトを実行していました。スクリプトを実行し、出力を変数に保存し、私は次のように使用するには、次のcatファイルの出力にechoという語を出力する

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

次に、私は変数の結果が使用されている猫のファイルの抜粋を示しています。私はbashの実行後に得る何

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

は、変数RESULTの正しい出力です。ただし、ファイルの先頭には、という単語エコーがあります(下記参照)。私はコードを自動化しようとしているので、問題があります。

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がスクリプトとして実行されることを期待しているように見えます。そうではない。これはちょうど作成され、input.inにcat'edされ、文字列 'echo'はその出力に含まれます。

heredocから文字列 'echo'を削除してみてください(あなたのperl出力はトークンK_POINTSで始まると仮定します)。

すなわち:

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

cat> input.in<<EOF 
    bla bla 
    $RESULT 
    EOF 
関連する問題