The old code used the [[ shell keyword, which is only available in bash.
The interpreter in line 1 is /bin/sh though.
This confused my shell portability check in pkgsrc, since that check neither guesses the target platform from the filename, nor assumes that /bin/sh is actually bash, even though this may be true on macOS.
The change makes the code shorter with the well-known ${var:-default} pattern.
Since $1 is now only accessed when it is defined, this allows the program to have a set -eu at the top.
This in turn would make all the && redundant since it applies automatic error checking.
The { ... } 1>&2 could also be replaced with a single exec 1>&2 at the top.
The old code used the
[[
shell keyword, which is only available in bash. The interpreter in line 1 is/bin/sh
though. This confused my shell portability check in pkgsrc, since that check neither guesses the target platform from the filename, nor assumes that/bin/sh
is actually bash, even though this may be true on macOS.The change makes the code shorter with the well-known
${var:-default}
pattern. Since$1
is now only accessed when it is defined, this allows the program to have aset -eu
at the top. This in turn would make all the&&
redundant since it applies automatic error checking.The
{ ... } 1>&2
could also be replaced with a singleexec 1>&2
at the top.