Próbuję interpolować zmienne w heredoc bash:
var=$1
sudo tee "/path/to/outfile" > /dev/null << "EOF"
Some text that contains my $var
EOF
To nie działa, jak się spodziewałem ( $varjest traktowane dosłownie, a nie rozszerzone).
Muszę użyć, sudo teeponieważ utworzenie pliku wymaga sudo. Robiąc coś takiego:
sudo cat > /path/to/outfile <<EOT
my text...
EOT
Nie działa, ponieważ >outfileotwiera plik w bieżącej powłoce, która nie używa sudo.
''), ale nie cytowanie separatora włącza ekspansję (tak jakby to było""). Jednak intuicja jest poprawna w Perl, gdzie heredoc z pojedynczymi cytowany zachowuje się identyfikatorów jakby to było w apostrofach, jedna z podwójnym cytowany identyfikatora jakby w cudzysłowach, a jeden z tyłu zaznaczonych identyfikatora jakby backticks ! Patrz: perlop: << EOF