Hola.
Bueno, daremos algunas pistas.
Al igual que $# contiene el nº total de argumentos, $@ contiene los argumentos, entendiendo por argumento una secuencia de caracteres separada de la siguiente por un espacio.
Una solución sería pasar todos los argumentos a un array, y mostrar el argumento pedido así:
echo ${array[$numero]}
pero eso tiene el inconveniente de que mostraría el argumento numero+1, ya que los arrays en bash comienzan por cero.
Otra pista que te puede venir bien es que en bash un array se puede formar así:
array=(uno dos tres cuatro)
echo ${array[2]}
El resultado de lo anterior será mostrar en pantalla 'tres', que es la posición 2 empezando por el cero.
Los paréntesis sirven para decirle a bash que las secuencias de caracteres separadas por espacios que hay dentro de ellos constituyen los elementos del array.
Y yastá. Ahora te toca pensar y, en todo caso, buscar en google.
Saludos.