Moin,

grundsätzlich: Wenn Du genau wissen willst, was Dein Script so alles tut, dann setze mal ein
Code:
set -x
an den Anfang. Damit erklärt die Shell Dir alles

Dann noch ein paar Sachen, die mir aufgefallen sind:

Du solltest alle Dateinamen quoten, z. B. so:
Code:
echo >> "/tmp/$Name.csv"
- damit verhinderst Du, dass die Shell Anstoß an Sonderzeichen nimmt oder sie zu interpretieren versucht (Variablen werden aber ausgewertet).

Dann verstehe ich nicht, wieso Du immer mit Kanonen nach Spatzen schiesst: Warum fährst Du ein Geschütz wie gawk auf, wenn ein
Code:
cut -f2 -d";" listen/liste.csv
den Job auch erledigen kann?

Auch hier solltest Du quoten:
Code:
grep "$Name" listen/liste.csv
sonst könnte die Shell, die dem grep die Variable vorlegt (und vorher interpretiert) auch wieder in Versuchung geführt werden.

Ach ja: Ich persönlich würde statt
Code:
cat personen/$Name.txt > /tmp/$Name.csv
einfach ein
Code:
cp "personen/$Name.txt" "/tmp/$Name.csv"
machen - oder gibt es einen bestimmten Grund für den cat?

Jan