我必须用一些bash脚本写一个文件。要替换变量,我们只需使用EOF
,我们就可以使用\
来避免替换。但是,我想逃避一切,所以,我可以使用'EOF'
并且也想要替换一个变量,那么如何?。
cat > myfile <<'EOF'
$a
$b
$c
$d
$e
$f
$g
.....
.....
$multiple lines like this
EOF
我想只用它的值替换一个变量let $c
。在这种情况下我该怎么办?我不能使用\
而不引用EOF
转义所有行,因为有很多行。
我只想逃避所有变量替换('EOF'
)但想要用一个变量替换一个变量(How?)。
答案 0 :(得分:2)
为了避免转义许多变量但仍然替换其中一个变量,请尝试:
$ 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