Shell scripting is a strange beast. The fact how long it took the author to explain the reason for the first parameter expansion pretty much demonstrates that. You can (and I regularily fall for that) loose yourself in scripting. It sort of lures you in. You take some command line invokations, wrap them in a while loop or pipe it to some grep/sed/awk magic, and achieve things. You can even go and learn the idioms. Important things like "set -e" and ${foo}, remember to quote every file and directory name that contains a variable (yes, people use spaces in the project directories they upload) and yadda yadda. Now you are approaching something vaguely safe. But dont rattle it too much, it might break. And it will definitely break in 2 years. But hey, you've written a program... It feels like compiance bias. "I can learn everything necessary to make bash into a programming language", yeah, you can. However, the question is really if you should...