Was ist x? … was bedeutet artists[$artist]=x?
Ein Dummy-Wert. Wie ich weiter getestet habe, reicht es selbst einen leeren String zu setzen.
declare -A definiert ein assoziatives Array, in dem man Zeichenketten nicht nur unter beliebigen Ganzzahlen, sondern Zeichenketten ablegen kann. Das wird hier genutzt, um Künstler nur genau einmal im Array abzulegen, wenngleich als Schlüssel und nicht als Wert (der einfach überschrieben wird, wenn ein Künstler mehrfach abgelegt wird).
Ein solches Array wird ungefähr so serialisiert:
artists=(["Kein Künstler.mp4"]="x" ["Foo Bar"]="x" [Dude]="x" )
${!artists[@]} ist die Syntax, um alle Schlüssel eines Arrays zu erhalten (wieder in Anführungszeichen, damit Leerzeichen keine Wörter auftrennen).