Stop fighting over complex logic in your bash scripts
Shell Scripting / Bash Tricks
Stop fighting over complex logic in your bash scripts
🧩 The Challenge
Trying to handle a dozen different state checks inside a nested if-then-else block is a great way to turn a simple task into a spaghetti-code nightmare that you’ll hate reading six months from now. I’ve wasted so many nights trying to untangle logic gates that I finally gave up and started using a better pattern.
💡 The Fix
Switch to the case statement instead of chaining if-elif-else blocks, especially when you are checking input or status codes. It makes the intent obvious and keeps the code flat enough that your brain doesn’t hurt when you need to change something later.
case "$1" in
start)
do_start
;;
stop|restart)
do_stop
do_start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
⚙️ Why It Works
Pattern matching in bash is way more readable than repeated string comparisons, and it saves you from forgetting those annoying brackets or semi-colons that break scripts. Using the pipe character lets you group multiple conditions that result in the same action, which is a massive time-saver.
🚀 Pro-Tip: Throw a “*” pattern at the end to act as a catch-all for any weird input you didn’t plan for.
Linux Tips & Tricks | © ngelinux.com | 7/18/2026
