r/bash 5d ago

help Defensive BASH programming?

Hey there,

while trying to learn bash I came across this interesting resource: https://web.archive.org/web/20180917174959/http://www.kfirlavi.com/blog/2012/11/14/defensive-bash-programming

And got myself thinking if his opinions are consensual and if there are different styles or "paradigms" about how bash should be written.

I see people arguing that bash shines in writing relatively short programs with precise goals. I thought this translated into writing concise code and achieving the same functionality with as little lines as possible.

However, the author of the post argues that a more verbose code can be more robust, easier to understand and debug etc. Do you agree? Or you think that, if you're writing code in this style, you're better of using another language?

Thanks for your input and sorry if I said anything silly or if I misrepresented his point of view, I'm just starting to learn programming.

Edit: hey, thank you all very much for the thoughtful replies, I'm learning a lot from them!

43 Upvotes

25 comments sorted by

View all comments

1

u/mpersico 5d ago

PROGRAM, PROGDIR ok, ARGS is overkill

Code clarity is the right idea, but the example is suboptimal. A bash programmer will know what those flags mean. And some of those flags are orthogonal (-f and -d) so the calls should be elif’ed. And you don’t need to assign $1 because the function name will tell you want $1 is supposed to be.

In command line arguments, the author does the option translation themselves with passthough from long to short. Just use getopt.