Isso é muito possível. Uma maneira muito simples de implementar isso seria que o arquivo de modelo fosse realmente o script e usasse variáveis de shell como
#! /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
Você pode até tornar isso configurável na linha de comando, especificando version=$1
e path=$2
, para que você possa executá-lo como bash script /foo/bar/baz 1.2.3
. O -
antes do EOF causa espaços em branco antes que as linhas sejam ignoradas, use <<EOF
simples se você não quiser esse comportamento.
Outra maneira de fazer isso seria usar a funcionalidade de pesquisa e substituição do 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
que substituiria cada instância das strings VERSION e PATH. Se houver outras razões para essas sequências estarem no arquivo de modelo, você poderá fazer sua pesquisa e substituir VERSÃO ou% VERSION% ou algo menos provável de ser acionado acidentalmente.