diff --git a/src/templater.sh b/src/templater.sh index eab35a1..7882387 100755 --- a/src/templater.sh +++ b/src/templater.sh @@ -39,12 +39,17 @@ function templater() { exit 1 fi - cp -f "${templateSrc}" "${templateDst}" - for var in $(env |awk -F= '{print $1}' |grep -E '^(_[A-Z0-9_]+|[A-Z0-9][A-Z0-9_]*)$'); do - sed -i.bak -e "s#\${${var}}#${!var//#/\\#/}#g" "${templateDst}" - # this .bak dance is done for BSD/GNU portability: http://stackoverflow.com/a/22084103/151666 - rm -f "${templateDst}.bak" - done + if [[ "$(command -v perl)" ]]; then + perl -p -e 's/\$\{(\w+)\}/(exists $ENV{$1} ? $ENV{$1} : "\${$1}")/eg' < "${templateSrc}" > "${templateDst}" + else + cp -f "${templateSrc}" "${templateDst}" + + for var in $(env |awk -F= '{print $1}' |grep -E '^(_[A-Z0-9_]+|[A-Z0-9][A-Z0-9_]*)$'); do + sed -i.bak -e "s#\${${var}}#${!var//#/\\#/}#g" "${templateDst}" + # this .bak dance is done for BSD/GNU portability: http://stackoverflow.com/a/22084103/151666 + rm -f "${templateDst}.bak" + done + fi # cat "${templateDst}"