
Many-a-time, have I used higher level languages to generate Bash scripts. Here, for the first time, I have taken the time to write a structured and safe Bash pretty printer, leveraging some work on shell escaping I did some months ago. http://hackage.haskell.org/packages/archive/bash/0.0.0/doc/html/Language-Bas... A wide range of Bash constructs are supported. It's easiest to point out what's not supported at present: . Arithmetic substitutions (those within "$(( ))"). . Bash's test special form (using "[[ ]]"). Ordinary uses of the test command are of course fully supported. . Specialized expression de-referencing forms that allow substitution and substring selection; the only thing supported in this domain is defaulting and length: ${#var} # Length of var in bytes. ${var:-} # If var is not set, yield the empty string. Many other forms that are tedious to get right -- special variable names, array expansions, even eval -- are fully supported. I'll be using this tool to support a config generation system. Another interesting application is generating Bash completion scripts. If you decide to use it and have trouble please let me know; this is the first Language.Something that I have written and it may not present the friendliest interface. Do let me know, also, if the omitted syntactic structures would be helpful to you and I will see what I can do to include them. -- Jason Dusek Linux User #510144 | http://counter.li.org/