[[ -z ${ret} ]] && ret="$1" ||
esto no hace falta hacerlo, cuando la variable esté vacía lo concatenará con nada
y las comillas del final sobran que sino te aparecerá la cadena con comillas
Si nos ponemos pejilgeros la variable solo se añade al entorno de ejecución. Una vez ejecutado la variable desaparece (a no ser que lo cargues en la shell). Es cierto que se podría hacer sin el export.
Pero bueno, como todo se puede mejorar pongo una versión un poco más mejorada:
while [ "$#" -gt 0 ] ; do
ret="$1 $ret"
shift
done
echo "$ret" | sed 's/\(.*\) /\1/'
o si no te agrada el sed
while [ "$#" -gt 0 ] ; do
ret="$1 $ret"
shift
done
echo "$ret" | col
Con esta nueva versión hacemos menos procesos que en tu versión y así sobrecargas menos al sistema
xD, aunque bueno... sería mejor mi primera versión... nadie dijo que no pudiera tener espacios al final