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 ( $var
jest traktowane dosłownie, a nie rozszerzone).
Muszę użyć, sudo tee
ponieważ utworzenie pliku wymaga sudo. Robiąc coś takiego:
sudo cat > /path/to/outfile <<EOT
my text...
EOT
Nie działa, ponieważ >outfile
otwiera 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