Hola, simplemente coloca unas comillas:
Esto es lo que nos dice la documentacion:
$@ -- Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, each parameter expands to a separate word. That is, "$@" is equivalent to "$1" "$2" ...
https://linux.die.net/man/1/bash
Es decir, cada parametro usando las comillas dobles es separado a una palabra, un solo valor, en tu caso al no usarlo ocurria lo que ya te paso:
El codigo original, añadido con tantos $# como interpertara $@ al no usar " ", ocurre una expansión no esperada:
Me mostrara:
Si te das cuenta, la interpretacion que tuvo al crear los valores en $@ lo hizo expandiendo cada palabra como diferentes argumentos, al colocarle las " " funciona como deberia.