防止bash解释而不引用所有内容

lza*_*zap 28 bash

我需要输出一些文本作为bash脚本,但在脚本中.我为此使用了猫,但它有一个缺点.它在写入过程中解释变量和内容.我确实想要阻止这一点.

如何在不引用所有变量的情况下做到这一点(我的脚本长得太长)?例

cat >/tmp/script << EOF
  $HOSTNAME
  # lots of other stuff I do NOT want to escape like \$VARIABLE
  # ...
EOF

cat /tmp/script
myhostname.mylan
Run Code Online (Sandbox Code Playgroud)

我想要:

cat /tmp/script
$HOSTNAME
Run Code Online (Sandbox Code Playgroud)

编辑:请注意我的脚本(这里只有$ HOSTNAME)很长,我不想改变它.同时单引号不起作用与<<

cat >/tmp/script '<< EOF
  $HOSTNAME
EOF'
File not found: EOF'
Run Code Online (Sandbox Code Playgroud)

有什么诀窍?谢谢.

tor*_*rek 75

如果你想要引用的所有内容:

cat << 'EOF'
stuff here with $signs is OK
as are `backquotes`
EOF
Run Code Online (Sandbox Code Playgroud)

请参阅手册中"此处文档"部分.

  • “ cat &lt;&lt; EOF`不能逃脱$`的东西,而” cat &lt;&lt;'EOF'`可以逃避,这里很不错! (3认同)