Se você quiser passar os argumentos para o seu script para o mplayer, em um xterm, isso deve funcionar:
#!/bin/sh
xterm -e mplayer "$@"
Isso funciona porque "$@"
se expande: um parâmetro por item. xterm
não tenta interpretar os argumentos para o comando de qualquer forma; apenas passa por eles.
Se você precisa realmente colocar sua lista de arquivos em uma variável, sua melhor aposta é usar uma variável de matriz. Por exemplo:
#!/bin/bash
declare -a FILES
for f; do
if [ -r "$f" ]; then
FILES+=("$f")
fi
done
xterm -e mplayer "${FILES[@]}"
O acima filtra os arquivos para passar apenas aqueles que são legíveis. Este é apenas um exemplo, normalmente você não faria esse tipo de filtragem. Além disso, normalmente, usaria um nome de variável em minúsculas, a menos que estivesse planejando exportá-lo.
PS: Dependendo do que você está fazendo, você está ciente do modo -slave
do mplayer?