I try to extract stuff into functions both for re-use and encapsulation. Coming from Java Bash itself leaves a lot to be desired in this area but that´s a different post. What I´ve found is that if I don´t encapsulate input variables with quotes it can become quite confusing what is defined and not. If you don´t quote and a variable is unset, it will shift your input.
function myfunc() {
local OPTION_ONE=$1
local OPTION_TWO=$2
echo "$OPTION_ONE and $OPTION_TWO"
}
VARTWO="hello"
myfunc $VARONE $VARTWO
myfunc "$VARONE" "$VARTWO"
In the first (unquoted) line above OPTION_ONE inside the functio will “become” VARTWO. In the second example with quotes it´s easier to understand that VARONE is the one missing, because it doesn´t shift it to the left.