`local` is a bash-ism so it's best avoided in this context, and the command is running in its own shell anyway so the variables can't pollute anything else.
The other comments are 100% correct.
The other comments are 100% correct.
The variables can already exist in the environment. One of them is tested by a statement that is reachable without that variable being initialized in that script.
A fix that keeps the script POSIX would be to initialize the variable.