Ich versuche, Variablen innerhalb eines Bash-Heredocs zu interpolieren:
var=$1
sudo tee "/path/to/outfile" > /dev/null << "EOF"
Some text that contains my $var
EOF
Dies funktioniert nicht wie erwartet ( $varwird wörtlich behandelt, nicht erweitert).
Ich muss verwenden, sudo teeweil das Erstellen der Datei sudo erfordert. So etwas tun wie:
sudo cat > /path/to/outfile <<EOT
my text...
EOT
Funktioniert nicht, da >outfiledie Datei in der aktuellen Shell geöffnet wird, die kein sudo verwendet.
''), aber nicht das Zitieren des Trennzeichens aktiviert die Erweiterung (als ob es in wäre""). Allerdings ist Ihre Intuition richtig in Perl, wo ein heredoc mit einfachen Anführungszeichen Kennung verhält sich , als ob es in einfachen Anführungszeichen waren, eines mit einer doppelten Anführungszeichen Kennung , als ob in doppelten Anführungszeichen, und ein mit Rück tickte Kennung , als ob in Backticks ! Siehe: Perlop: << EOF