Com o script a seguir, ele funciona (usando mplayer , que provavelmente não está presente em muitos sistemas).
#!/bin/sh
grep -A 1000 --text -m 1 ^Ogg "$0" | mplayer -
exit
OggS^@^B^@^@^@^@^@^@^@^@^]f<8a>g^@^@^@^@lY߸^A^^^Avorbis^@^@^@^@^A"V^@^@^...
A última linha é o começo do binário do arquivo de áudio.
O comando grep procura a primeira ocorrência de Ogg no arquivo $0 (que é o próprio arquivo de script) e imprime 1000 linhas depois dessa linha (é suficiente para meu pequeno áudio arquivo de teste). A saída de grep é então canalizada para mplayer , que está lendo /dev/stdin (abreviação de /dev/stdin is - ).
Eu criei esse arquivo concatenando o arquivo de script playmeBashScript.sh com o arquivo de áudio sound.ogg :
cat playmeBashScript.sh sound.ogg > playme.sh
Uma versão mais geral e um pouco mais curta com sed em vez de grep (graças ao Elias):
#!/bin/sh
sed 1,/^exit$/d "$0" | mplayer -
exit
OggS^@^B^@^@^@^@^@^@^@^@^]f<8a>g^@^@^@^@lY߸^A^^^Avorbis^@^@^@^@^A"V^@^@^...
Nesse caso, sed seleciona todas as linhas do número um até a linha onde encontra a palavra exit e as exclui. O restante é colado e canalizado para mplayer . É claro que isso só funciona se a palavra sair ocorrer apenas uma vez no script antes dos dados binários.