echo $begrüßung;
Ist es vielleicht das problem der funktion in einer funktion?
Nein. Eine Funktion in einer anderen zu deklarieren ist zwar nicht besonders sinnvoll, aber machbar. Sinnvoll ist es deshalb nicht, weil sie dadurch keine lokale Funktion wird. Nach Aufruf der äußeren Funktion, durch den sie erst angelegt wird, steht sie ebenfalls lobal zur Verfügung. Wenn man die äußere Funktion ein weiteres Mal aufruft gibt es nur einen Fehler, dass es die innere Funktion bereits gibt.
Aber dieses Verschachteln von Funktionen konnte ich in deinem Posting nicht erkennen. Der Aufruf von Funktionen innerhalb einer Funktion ist hingegen problemlos möglich. Generell ist aber die Einschränkung durch den Variable Scope zu beachten. Die Lösung mit dem Schlüsselwort global ist zwar eine einfache, aber keine besonders schöne. Funktionen sollten idealerweise nur mit den übergebenen Parametern arbeiten, und nicht auf außerhalb deklarierte Dinge angewiesen sein.
echo "$verabschiedung $name";