Linux cat 多行写入文件防止变量替换

问题描述

  对多个变量及多行输出到文件,存在变量自动替换,当使用cat<<EOF不想对内容进行变量替换、命令替换、参数展开等

问题解决

  转义特殊字符如 $ `等

一、对 $·\ 进行转义

cat >> a.sh << EOF

echo \`hostname\`

echo $HOME

EOF

二、在分界符EOF前添加反斜杠\,或者用单引号、双引号括起来

cat >> a.sh << \EOF

echo `hostname`

echo $HOME

EOF

cat >> a.sh << "EOF"

echo `hostname`

echo $HOME

EOF

cat >> a.sh << 'EOF'

echo `hostname`

echo $HOME

EOF

作者:独木桥

出处:http://xiaochina.cnblogs.com/

  对多个变量及多行输出到文件,存在变量自动替换,当使用cat<<EOF不想对内容进行变量替换、命令替换、参数展开等

问题解决

  转义特殊字符如 $ `等

一、对 $·\ 进行转义

cat >> a.sh << EOF

echo \`hostname\`

echo $HOME

EOF

二、在分界符EOF前添加反斜杠\,或者用单引号、双引号括起来

cat >> a.sh << \EOF

echo `hostname`

echo $HOME

EOF

cat >> a.sh << "EOF"

echo `hostname`

echo $HOME

EOF

cat >> a.sh << 'EOF'

echo `hostname`

echo $HOME

EOF