シェルスクリプトに渡された引数を取るときと関数の引数を取るときどちらも「$1」を使うので、引数のスコープがどこまでになってるかをチェック。(関数の中の$1がシェルスクリプトで渡されたものになってないかが心配だった)
結果、関数の中の$1はちゃんと関数に渡された引数でした。
hello.sh
# /bin/sh
hello() {
echo "Hello $1"
}
NAME=$1
hello "Mr.$1"
実行結果
$ sh hello.sh kamatama41
Hello Mr.kamatama41