Syntax:
#% shell-command
#%# comment
#%include file
#%raw
#%end raw
#%incraw file (include raw file)
#slurp (removes trailing newline)
%$ (masks $)
Options:
-ass/--allow-subshell: does not mask $(, ´
-o /--optimize : minimize printf usage
Example usage:
sh -c "$( shtpl [Options...] template )"
shtpl [Options...] template | ( . /dev/stdin )
Should work with busybox ash, dash, bash, ksh and zsh.
(License: GPLv3+)
sudo make install
$ cat testfile
#%include testfile2
#%incraw testraw
#% for i in first "second\"" third; do
#% str=super; [ "$i" = "third" ] && str="not so super"
blubber test $i ist $str, #slurp
keine'\\" frage
#% done
blub!
#%raw
#%echo Hello
#%end raw
#%#include testfile2
$ cat testfile2
#% date="$( date )"
$date
$( date )
` date `
./*.sh
<( ls )
%$date
$ cat testraw
Blubber blubb
blub
blubber blub
$date
$
#% echo blub
` date `
$(
$ shtpl testfile
date="$( date )"
printf "%s\n" " $date"
printf "%s\n" " \$( date )"
printf "%s\n" " \` date \`"
printf "%s\n" " ./*.sh "
printf "%s\n" " <( ls )"
printf "%s\n" " \$date"
printf "%s\n" ""
printf "%s\n" ""
printf "%s\n" "Blubber blubb"
printf "%s\n" "blub"
printf "%s\n" "blubber blub"
printf "%s\n" "\$date"
printf "%s\n" "\$"
printf "%s\n" "#% echo blub"
printf "%s\n" "\` date \`"
printf "%s\n" "\$("
printf "%s\n" ""
printf "%s\n" ""
for i in first "second\"" third; do
str=super; [ "$i" = "third" ] && str="not so super"
printf "%s" " blubber test $i ist $str, "
printf "%s\n" " keine'\\\\\" frage"
done
printf "%s\n" " blub!"
printf "%s\n" ""
printf "%s\n" "#%echo Hello"
printf "%s\n" ""
#include testfile2
$ sh -c "$( shtpl testfile )"
Sam Jun 2 22:59:29 CEST 2012
$( date )
` date `
./*.sh
<( ls )
$date
Blubber blubb
blub
blubber blub
$date
$
#% echo blub
` date `
$(
blubber test first ist super, keine'\\" frage
blubber test second" ist super, keine'\\" frage
blubber test third ist not so super, keine'\\" frage
blub!
#%echo Hello