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
我必须用一些 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