Comment Comment by wolletd For a short-lived script, the `${1:?missing argument}` stuff may be useful, but usually, I want to print some longer usage or help text in the error case.I usually go with something like this: set -eu function eusage() { echo "Usage: $0 <input-file> <output-file>" >&2 echo "Error: $@" >&2 exit 1 } infile=${1:-}; shift || eusage "Missing input filename" outfile=${1:-}; shift || eusage "Missing output filename" The `${1:-}` in this case evaluates to an empty string if `$1` is not set, but `shift` fails when there is no argument to remove. parent wolletd 3 months ago
I usually go with something like this:
The `${1:-}` in this case evaluates to an empty string if `$1` is not set, but `shift` fails when there is no argument to remove.