I was about to comment with my usual 'why not PowerShell', but it seems the author acknowledges this anyway at the end: > I’ll quote Rich’s sh (POSIX shell) tricks to end this: > I am a strong believer that Bourne-derived languages are extremely bad, on the same order of badness as Perl, for programming, and consider programming sh for any purpose other than as a super-portable, lowest-common-denominator platform for…
Moreshell tricks: first class lists, jq, and the es shell
11–15 of 15 posts
Re: Moreshell tricks: first class lists, jq, and the es shell
#12I review shell scripts from beginner ops people. I would not approve any of this stuff. Once you need this complexity in shell, you need other things you should be getting from the language's stdlib. So I'd ask them to switch to Python or Go. Do not fall into the trap of big complex shell scripts.
Shell is great for personal or local-group/team automation, but outside of a bootstrap, it should _never_ be used for anything in deployed production.
The 3 main issues are hidden deps, error handling, and performance.
Re: Moreshell tricks: first class lists, jq, and the es shell
#13 if .["found"] then
. | .after += [$arg]
elif $arg == "--" then
. | .found = true
else
. | .before += [$arg]
end
or for (i = $indicies) if { ~ $*($i) -- } {
before =
...is more readable and maintainable than: my ($before, $after) = split /\s*--\s*/, $input;
my @list1 = split ' ', $before;
...Re: Moreshell tricks: first class lists, jq, and the es shell
#14let’s implement split-by-double-dash, a function (or a program) that would return two lists: args that come before -- and ones that come after. split-by-double-dash a b c -- d e f should return the lists [a, b, c] and [d, e, f] FWIW in YSH ( https://oils.pub/ysh.html ), you can do this in a style that's like Python and JavaScript, but you can also combine it with shell idioms. First create it and pretty print it: ysh…
(I guess we're duplicating threads at this point :D)
Re: Moreshell tricks: first class lists, jq, and the es shell
#15I review shell scripts from beginner ops people. I would not approve any of this stuff. Once you need this complexity in shell, you need other things you should be getting from the language's stdlib. So I'd ask them to switch to Python or Go. Do not fall into the trap of big complex shell scripts.
I really enjoyed this article because I found it refreshing- it felt like it was intended for hackers. I love to learn more about different shells and functionality vs yet another unicorn's latest product announcement.