Well, we disagree, there. I see it as having gone through so many iterations and having so many players involved now it's lost much of it's ideological purity and, with that, some of it's power, reliability, and usefulness due to the resulting loss of cohesion. It's backsliding into trying to become Windows NT, completely with 'svchost.exe'.
Ideological purity is to me a flaw, especially if you mean holding on to old things invented in the 60s. Cohesiveness is good, paralysis is not.
Also, as a sysadmin my job is to solve problems, not to bask in ideological purity. So, eg, I really like that systemd makes it really easy to ask for the logs of 3 particular services last weekend at 3 AM, and have them properly interleaved with one command. On SysV systems, any time spent on figuring out where it logs, if the log was rotated, and whether it's in .1 or .5.gz, and assembling a combined report is wasted time.
I think shell scripts are awesome and they do tons of real work for my clients and my own company's infrastructure. They are indispensable to me. Why be annoyed that someone else is getting some mileage out of a technology you don't happen to use?
You misunderstand. I don't mean shell scripts, I mean bash. Bash is crap. I want something more like PowerShell in spirit, only that's not quite it either. I want a shell where: every command is 100% precise. All arguments are always exact. There's never confusion with spaces, quotes, newlines, or anything else. IFS doesn't exist. You never need to work around command line lengths by hand. "Do this to $list" always works, whether 10 or a million files. It should offer excellent process management, along the lines of "Launch up to 10 simultaneous instances of (command) on (list of files), call (this) on command fail and (that) on success" as a natively supported primitive.
All commands should output something Powershell-ish. Not plain text, but flexible objects with datatypes. I don't want to parse stuff with AWK, I just want to ask for $File.CreationDate.Year. The format should be perfectly delimited, no splitting by spaces or by ":", and allow adding additional data without breaking every script. Every datatype should be transmitted perfectly. A date is always the exact date the software knows of internally, not something truncated to seconds to look pretty on the console.
The Unix text stuff was a good start. Time to do better.
I teach several sysadmin classes, too. What I notice is that once novice folks learn shell script, they become disenchanted with unit files. However, beforehand, they are usually indifferent or show some bias toward using units. Also keep in mind nobody got rid of them, they just forced some major distros to do it. There are still plenty that didn't, including FreeBSD which I saw grow in popularity and catch a lot of disenchanted former Linux users.
Funny, I'm the complete opposite. I wrangled with SysV scripts a bunch. They're awful. Every distro has its own standards and tooling. Upgrades sometimes force you to look at a 3-way diff of some 150 line script. Some do weird and fishy things. Best case it's 50 lines of boilerplate and 3 unique lines.
Unit files do it right. Code isn't ever placed in /etc. The configuration format is maximally simple and boring. I can roll up to a systemd system and quickly see what the admin changed, because all the changes are in /etc, and the only thing to be found is the changes. Upgrades go much smoother. The boring boilerplate with start-stop-daemon doesn't exist. PID files don't exist. Services are tracked perfectly. Every possible knob can be applied to every possible unit without hacking up a shell script. Logging is done reliably for every single service.