Mal etwas aus der Dachbodenkiste. Wenn ein shell/bash script nicht das tut, was man von ihm erwartet gibt es zwei nette Techniken um das Problem zu lösen:
sh -x <scriptname>
das ist der xtrace mode, bei dem jedes Kommando auf stderr mit einem vorangestelltem + ausgegeben wird, bevor es ausgeführt wird. Damit kann man in einem sich bis zur Problemstelle vorwärtsdebuggen.
sh -n <scriptname>
das ist der noexec mode, welcher die Kommandos liest aber nicht ausführt. Damit lässt sich der Syntax vorab prüfen.