However I haven't tried writing scripts in zsh yet, just sh/bash.
However I haven't tried writing scripts in zsh yet, just sh/bash.
1. "Hand written" commands in shell
2. Shell script with copy-pasted commands from interactive session
2b. Evolved shell script with getopt. Complexity level beginning to tickle the spidey sense that it's too big.
3. Node.js script (I can write Python but JS seems infinitely nicer)
fish would break the 1->2 transition, sending me straight to 3 before I've really gotten a handle on the problem domain.
Ruby'd be my pick for "most-pleasant scripting language" so long as I can avoid any libraries/frameworks that do too much metaprograming "gee, wouldn't you love to never be able to track down where this is defined?" crap. Maybe Lua, but deps are a bit of a pain to manage there, and it's a huge step down in third party library availability compared with the other three languages here mentioned.
Really, if not for up-to-date library availability being higher in other languages, I'd probably still be using Perl for everything. It feels more "command-line native" than the other options. Installed everywhere. The community's not too in-love with trendy, cute bullcrap. A project you wrote five years ago will probably still run fine with no effort. It's kinda like supercharged bash with way fewer footguns.
I don't think anyone would make something quite like it these days, starting form scratch.
That said, personally, for anything more involved than a one-liner alias kind of script, I turn to python, or PowerShell on Windows.
You and submitter (who according to CV is proficient in Python) might like Oilshell.
I agree with this. If you can trust your users to have python3 in their environment, I don't see a good reason to use sh/bash instead of python. Non-trivial shell scripts are unreadable to me, and the semantics are too different from normal programming languages.
The only scenario I can see is a script that has to call multiple commands over and over, which can be a pain in python if you're piping a lot of stuff and all that. No, piping grep to cut and sed doesn't count; you can do that in python itself.
You would need to ensure said users have all the pip dependencies your python script imports as well. shell scripts don’t have that issue unless you’re calling some external program that isn’t installed.
Good thing that bash has such an extensive amount of standard libraries and that you're almost never calling external programs? And unlike Python, which is seemingly almost exclusively calling third-party libraries from PyPI?