Na veel gedoe zijn de problemen opgelost. Het oplossen ging beter door de functie in een apart script te zetten en die met find aan te roepen. Toen de fouten eruit waren, heb ik alles in een script teruggezet en de functie weer aangemaakt. Zie onderstaande script:
#!/bin/bash
export musicdir="/home/bart/MUSIC/music.bak/NL_ENG"
export playlistdir="$musicdir/playlists"
mkdir -p "$playlistdir"
function mkplaylist(){
shopt -s nullglob
dir="$1"
echo "dir=$dir"
pushd "$dir"
album="$(basename "$dir")"
artist="$(basename "$(dirname "$dir")")"
playlist="$artist-$album.m3u"
echo "album=$album"
echo "artist=$artist"
echo "playlist=$playlist"
[ -e $playlist ] && rm $playlist
for i in *.{mp3,ogg}
do
file="$dir/$i"
link="$(realpath --relative-to="$playlistdir" "$file")"
echo "file=$file"
echo "link=$link"
echo "$link" >> "$playlist"
done
[ -e "$playlist" ] && mv "$playlist" "$playlistdir"
popd
}
export -f mkplaylist
find -L "$musicdir" -type d -exec bash -c 'mkplaylist "{}"' \;