Eigentlich weiss man es ja, doch wissen und darauf achten ist leider manchmal zweierlei.
Ich habe mir ein bash script gebaut, das mir einen IRC-Channel überwachen und ggf. ein E-Mail senden sollte. Dazu habe ich 2 Funktionen gemacht. Die eine, die sich mit einem IRC-Server verbindet und im entsprechenden Kanal einloggt und die 2. Funktion, die dann das E-Mail versendet. "Natürlich" hiess die Funktion mail. Genau so heisst auch das Programm, mit dem ich die Mails versenden wollte.
Mein Problem äusserte sich in einer Endlosschleife. Sobald ein Mail versandt werden sollte. Alle Tests mit echo und Ähnlichem funktionierten natürlich.
Nachdem die Kommunikation mit dem IRC-Server in einer while-Schleife läuft und daher ständig von STDIN liesst, hatte ich immer einen Zusammenhang damit vermutet. Wenigstens habe ich dadurch viel über Datei Descriptoren und FIFOs gelernt. Nach Stunden habe auch ich verstanden, dass ich nicht das Programm "mail" rief, sondern jedes Mal wieder meine eigene Funktion "mail", die dann "mail" rief.
Ich werde mir wohl ein anderes Namensschema für Funktionen angewöhnen (müssen).