I both love and hate writing Bash. I love that it's so streamlined for operating on files and working with processes (I agree with this popular question that it's way better in this regard than Python, Ruby, etc.), but I hate the syntax, particularly around conditionals, loops, etc.
(This is subjective, but I find it both confusing and annoying. E.g. $var
when reading, but var
when writing; writes silently fail if there are spaces around =
; the double brackets in ifs when using regexp; double semicolons sometimes and single semicolons others; etc.)
As a huge fan of CoffeeScript, which compiles to JS, I've been wondering: are there any languages that have the aesthetic/syntax of languages like Python/Ruby/CoffeeScript but which compile and run as Bash instead of one of those other runtimes?
E.g. I'd love to be able to write mostly-Bash with just a bit simpler syntax:
$AGGREGATE_FILENAME = 'allfiles.txt'
if not exists $AGGREGATE_FILENAME
touch $AGGREGATE_FILENAME
for $file in files/*
cat $file >> $AGGREGATE_FILENAME
switch $1
case 'test'
run-tests
echo 'Tests finished!'
case 'deploy'
echo 'Packaging...'
mv foo bar/
deploy-bar
This is a super contrived example, and the syntax is a strawman (mostly inspired from CoffeeScript but keeping the essential Bash notions of first-class commands, separated from variables, and loose typing).
Anyway, just a question and food for thought. I'd love to be able to write my scripts in something nicer than Bash. =) Thanks!