Linux

在 Shell 腳本中使用 Linux 進行模板化?

  • January 10, 2022

我想要完成的是:

1.)有一個配置文件作為模板,變數如 $ version $ 路徑(例如 apache 配置)

2.) 擁有一個“填充”模板變數並將生成的文件寫入磁碟的 shell 腳本。

這可能與一個shell腳本。如果您能說出一些我可以完成此任務的命令/工具或一些好的連結,我將非常感激。

這是很有可能的。實現這一點的一個非常簡單的方法是讓模板文件實際上是腳本並使用 shell 變數,例如

#! /bin/bash
version="1.2.3"
path="/foo/bar/baz"
cat > /tmp/destfile <<-EOF
here is some config for version $version which should
also reference this path $path
EOF

您甚至可以通過指定version=$1and在命令行上進行配置path=$2,這樣您就可以像bash script /foo/bar/baz 1.2.3. -before EOF 會導致行之前的空白被忽略,如果您不想要這種行為,請使用plain <<EOF

另一種方法是使用 sed 的搜尋和替換功能

#! /bin/bash
version="1.2.3"
path="/foo/bar/baz"
sed -e "s/VERSION/$version/g" -e "s/PATH/$path/" /path/to/templatefile > /tmp/destfile

這將替換字元串 VERSION 和 PATH 的每個實例。如果還有其他原因,這些字元串會出現在模板文件中,您可能會將搜尋和替換為VERSION或 %VERSION% 或不太可能意外觸發的內容。

引用自:https://serverfault.com/questions/287688