Por que o $ id desapareceu após o EOF?

1
cat >run_pos2bed3.sh <<EOF
ls 2*/peaks.txt | while read id;
do echo $id done;
EOF

depois da entrada

nano mostra apenas

ls 2*/peaks.txt | while read id;
do echo  done;
EOF

Como posso adicionar $id após EOF ?

    
por MING LU 18.10.2017 / 02:17

1 resposta

3

Why did $id disappear after the EOF?

Porque, quando você diz << e, em seguida, $ , você obtém o valor que a variável já possui. Se você fizer

id=foo
cat >run_pos2bed3.sh <<EOF
ls 2*/peaks.txt | while read id;
do echo $id done;
EOF

você verá que obtém do echo foo done .

How can I add $id after EOF?

Faça

cat >run_pos2bed3.sh << \EOF
ls 2*/peaks.txt | while read id;
do echo $id done;
EOF

A diferença é o \ antes do EOF na linha << .

    
por 18.10.2017 / 02:30