如何使用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 ...