Don’t write shell script. Not in bash, and not in any other shell. There are two very simple reasons for this:

  1. They are not portable.
  2. They are hard to read.

Nowadays, we have a much better option - write those same shell-scripts in a cross-platform scripting language, such as Python or Perl. These languages are much easier to read than some devilish combination of awk, sed and a cryptic syntax. Well, Python is. But Perl can be readable too, contrary to common wisdom, if a bit of care is taken when writing the script. Sure, most shell scripts use some really neat tricks & hacks, but let me quote Brian Kernighan:

“Everyone knows that debugging is twice as hard as writing a program in the first place. So if you’re as clever as you can be when you write it, how will you ever debug it?”

Brian Kernighan

(If you follow the link, you’d see Mr. Kernighan has a hand or two in the scripting pot himself. Oh well…)

In my experience, even the most temporary script ends up expanding beyond its original intention, and thus needs to be modified and maintained. Shell scripts are just not the right tools anymore.

Further Reading

  1. Python, Subprocess and Multiple Arguments
  2. Programming with VI

Updated: