Cat here document 转义除一个变量以外的所有变量

Cat here document escape all variable but one

我必须用一些 bash 脚本写入文件。要替换变量,我们可以简单地使用 EOF 并使用 \ 来避免替换。但是,我想逃避一切,所以,我可以使用 'EOF' 并且还想替换一个变量,那么如何呢?

 cat > myfile <<'EOF'
    $a
    $b
    $c
    $d
    $e
    $f
    $g
   .....
   .....
   $multiple lines like this
   EOF

我只想用一个变量 let $c 替换它的值。在这种情况下我该怎么办?我不能使用 \ 而不引用 EOF 转义所有行,因为有很多行。

我只想转义所有变量替换('EOF'),但想用它的值替换一个变量(如何?)。

为了避免转义许多变量但仍然替换其中一个变量,请尝试:

$ cat script
sed 's/$c/3/' >myfile <<'EOF'
    $a
    $b
    $c
   $multiple lines like this
EOF

让我们运行脚本并检查输出文件:

$ bash script
$ cat myfile 
    $a
    $b
    3
   $multiple lines like this

备选

此版本允许使用变量 $c,因此可能更灵活:

$ cat script
c=New
sed "s/$c/$c/" >myfile <<'EOF'
    $a
    $b
    $c
   $multiple lines like this
EOF

执行此结果:

$ bash script
$ cat myfile 
    $a
    $b
    New
   $multiple lines like this