Local
foo(){
  if [ -z "${1}" ]; then
    echo "hi: ${hi}"
    echo "hi_without_local: ${hi_without_local}"
  else
    local hi="${1}"
    hi_without_local="${1}"
    echo "Saved values."
  fi
}
main() {
  foo "hello"
  foo
}
main "${@}" || exit 1
Output:
Saved values.
hi:
hi_without_local: hello