Hush, a modern shell scripting language
If this wants to sell itself as a shell scripting language, it should very quickly advertise what is it that makes it superior to say, bash for typical shell scripting tasks.<p>Shell scripts with bash are painful to the point that if I find myself writing more than around 10 lines of shell, I tend to stop and switch to Perl instead. But Perl hasn&#x27;t been too popular lately and isn&#x27;t ideal either, so I&#x27;m very much up for something better.<p>Here&#x27;s some features I want from a shell scripting language:<p>* 100% reliable argument passing. That is, when I run `system(&quot;git&quot;, &quot;clone&quot;, $url);` in Perl, I know with exact precision what arguments Git is going to get, and that no matter what weirdness $url contains, it&#x27;ll be passed down as a single argument. Heck, make that mandatory.<p>* 100% reliable file iteration. I want to do a &quot;for each file in this directory&quot; in a manner that doesn&#x27;t ever run into trouble with spaces, newlines or unusual characters.<p>* No length limits. If I&#x27;m processing 10K files, I don&#x27;t want to run into the problem that the command line is too long.<p>* Excellent path parsing. Such as filename, basename, canonicalization, finding the file extension and &quot;find the relative path between A and B&quot;.<p>* Good error handling and reporting<p>* Easy capture of stdout and stderr, at the same time. Either together or individually, as needed.<p>* Excellent process management. We&#x27;re in 2022, FFS. We have 128 core CPUs. A modern shell scripting language should make it trivial to do something like: take these 50000 files, and feed them all through imagemagick, using every core available, while being able to report progress, record each failure, and abort the entire thing if needed.<p>* Excellent error reporting. I don&#x27;t want things failing with &quot;Command failed, aborted&quot;. I want things to fail with &quot;Command &#x27;git checkout <a href="https:&#x2F;&#x2F;" rel="nofollow">https:&#x2F;&#x2F;</a>....&#x27; exited with return code 3, and here&#x27;s for good measure the stdout and stderr even if I redirected them somewhere&quot;.<p>* Give me helpers for common situations. Eg, &quot;Recurse through this directory, while ignoring .git and vim backup files&quot;. Read this file into an array, splitting by newline, in a single line of code. It&#x27;s tiresome to implement that kind of thing in every script I write. At the very least it should be simple and comfortable.<p>That&#x27;s the kind of thing I care about for shell scripting. A better syntax is nice, but actually getting stuff done without having to work around gotchas and issues is what I&#x27;m looking for.