我試圖插一個bash定界符的內部變量:使用變量
var=$1
sudo tee "/path/to/outfile" > /dev/null << "EOF"
Some text that contains my $var
EOF
這不是工作,我會期望($ VAR字面上處理,不展開)。
我需要使用sudo tee,因爲創建文件需要sudo。做類似:
sudo cat > /path/to/outfile <<EOT
my text...
EOT
不起作用,因爲> outfile在當前shell中打開文件,該文件不使用sudo。
這是一個可以理解的混亂!如下所述,引用分隔符的任何部分都會關閉heredoc中的擴展(就像在''''中那樣),但* not *引用分隔符會使擴展開啓(就像它在'「」'中一樣)。 *然而,*您的直覺在Perl中是正確的,其中具有單引號標識符的heredoc表現得像在單引號中一樣,其中一個帶有雙引號標識符就像在雙引號中一樣,另一個帶有帶勾號標識符如果在反引號!參見: [perlop:<< EOF](http://perldoc.perl.org/perlop.html#%3c%3cEOF) –