bash hoge.sh 1 2
echo $#
echo $1
echo $2

これらの$# $1 $2は関数の中でなければ必ず取得できる変数ですか?
読み取り専用変数で再代入されないと思っていいですか?