À l'aide de variables à l'intérieur d'un bash heredoc

Je suis en train d'interpolation de variables à l'intérieur d'un bash heredoc:

var=$1
sudo tee "/path/to/outfile" > /dev/null << "EOF"
Some text that contains my $var
EOF

Ce qui ne fonctionne pas comme je l'avais prévu ($var est traitée littéralement, et non développé).

J'ai besoin d'utiliser sudo tee en raison de la création du fichier de sudo. Faire quelque chose comme:

sudo cat > /path/to/outfile <<EOT
my text...
EOT

Ne fonctionne pas, parce que >outfile ouvre le fichier dans le shell courant, ce qui n'est pas l'utilisation de sudo.

  • C'est une confusion compréhensible! Comme indiqué ci-dessous, en citant une partie de la délimiteur s'éteint expansion dans le heredoc (comme si c'était dans ''), mais ne cite pas le délimiteur tourne expansion (comme si c'était dans ""). Cependant, votre intuition est correcte en Perl, où un heredoc avec un seul identificateur entre guillemets se comporte comme si elle était entre guillemets simples, une avec un lit double-identificateur entre guillemets, comme si de guillemets doubles et une avec en arrière-cochée identifiant comme si dans backticks! Voir: perlop: <<EOF
InformationsquelleAutor Jon | 2011-02-08