我试图插一个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) –