If you write to POSIX it's a lot more portable. If you're doing something outside POSIX, it's probably best to use something else, like Perl.

...Or powershell!

Besides, the trick is knowing what is POSIX compliant and portable, and what isn't. A lot of things will almost work.

Knowing stuff is what we're paid for, otherwise we'd all be making minimum wage. Besides, there are plenty of non-bash shell scripting resources out there, which is good to learn if you want to work with the BSDs or proprietary UNIX systems.

Powershell on UNIX is like Perl on Windows. It works, but it's weird and alien. But the same can be said for .NET, really.