Você pode usar shift. É melhor que eval.
cat busy.sh
leshift () {
shift "$1"
echo "$1"
}
echo param debut
echo $#
echo $@
for i in "$@" ; do
echo "$i"
done
echo param shift
read a # number from 1 to 5
b=$(leshift "$a" "$@")
echo $b
echo param fin
echo $#
echo $@
for i in "$@" ; do
echo "$i"
done
Você chama assim
./busy.sh a b 'c h' d e