I can’t think of a single reason to use bash over Python. Anything you can do in bash can be done in pure Python. Unless you’re working in some embedded environment it’s a non-issue to install a Python interpreter (you certainly already have one). I would only use sh/bash for packages I’m distributing to avoid the external dependency, and then only if it’s a relatively simple script.
I know whatever environment I run my shell script in has sh
, I can’t rely on (the right version of) python being there.
Because you could be on another machine that doesn’t have Python 3.X it only has 3.X-1. or you could write code for Python 3.12 and then four years later no one has 3.12 anymore.
Sometimes you need to download packages from pip but pip might not be available or you may be hitting your company’s internal pip mirror.
Bash is much better for doing file operations and piping the output across multiple commands
BASH has some useful features and I’ve literally never had an environment with bash unavailable (even if a package is needed, so what).
MacOS ships only 3.something version, which has some compatibility issues with Bash 4+.
Python is superior for string anything (parsing, searching, manipulating). But Bash is much simpler for running existing CLI tools. Plus you should already be using Bash as a simple terminal language already, so wrapping what you’re used to into a simple script flows naturally.
Eg, if I have some admin tool for updating a user thingamajig, a common scripting need is just running that tool for every user in a file (or the output of another command). The string manipulation that often requires is annoying in bash, but running the commands is easier than Python.