I like tcl as an alternative to shell for any non-trivial scripts.
And its coroutines + built in event loop makes for really nice seamless async style programming.