如何使用BASH编写多行configuration文件,并在多行上使用variables?

如何使用BASH在一个名为myconfig.conf的文件中编写多行?

 #!/bin/bash kernel="2.6.39"; distro="xyz"; echo <<< EOL line 1, ${kernel} line 2, line 3, ${distro} line 4 line ... EOL >> /etc/myconfig.conf; cat /etc/myconfig.conf; 

语法( <<< )和使用的命令( echo )是错误的。

正确的是:

 #!/bin/bash kernel="2.6.39" distro="xyz" cat >/etc/myconfig.conf <<EOL line 1, ${kernel} line 2, line 3, ${distro} line 4 line ... EOL cat /etc/myconfig.conf 
 #!/bin/bash kernel="2.6.39"; distro="xyz"; cat > /etc/myconfig.conf << EOL line 1, ${kernel} line 2, line 3, ${distro} line 4 line ... EOL 

这就是你想要的。

heredoc解决scheme无疑是最常见的方法。 其他常见解决scheme是:

 echo'line 1',“$ {kernel}”'
第2行,
第3行“,”$ {distro}“,
第4行> /etc/myconfig.conf

 exec 3>&1#保存当前的stdout
 exec> /etc/myconfig.conf
回声线1,$ {kernel}
回波线2, 
回声线3,$ {distro}
 ...
 exec 1>&3#恢复stdout

如果你不想要variables被replace,你需要用单引号括住EOL。

 cat >/tmp/myconfig.conf <<'EOL' line 1, ${kernel} line 2, line 3, ${distro} line 4 line ... EOL 

前面的例子:

 $ cat /tmp/myconfig.conf line 1, ${kernel} line 2, line 3, ${distro} line 4 line ...