Die Syntax für die Erstellung einer Funktion lautet:
[function] NAME () { KOMMANDOLISTE; }
Diese Deklaration definiert eine Funktion NAME. Das Wort function ist nicht notwendig. Sollten Sie das Schlüsselwort weglassen, sind die runden Klammern nach dem Funktionsnamen Pflicht. In den geschweiften Klammern werden dann die Kommandos entweder durch Semikola oder durch das neue Zeile Zeichen getrennt.
ole@defiant:~> werda () { echo Du bist $USER; who; } ole@defiant:~> werda Du bist ole ole :0 Nov 20 10:03 (console) ole pts/0 Nov 20 10:04 tapico pts/1 Nov 20 10:14 walter pts/2 Nov 20 10:53
Wichtig ist es hier, daß Sie nicht das letzte Semikolon vergessen. Auch der letzte Befehl vor der schließenden geschweiften Klammer muß mit einem Semikolon beendet werden.
Das Schreiben der Befehle in einer Zeile ist bei längeren Befehlsfolgen etwas unpraktisch. Sie können anstatt eines Semikolon auch einen Zeilenumbruch machen, um die Kommandoliste einzugeben.
ole@defiant:~> function hallo () { > echo Hallo $USER > date +"Es ist %H:%M:%S Uhr" > } ole@defiant:~> hallo Hallo ole Es ist 11:49:26 Uhr
Bis jetzt wurden die Funktionen wie Aliase verwendet. Im Gegensatz zu diesen können Funktionen Parameter mitgegeben werden. Diese Parameter stehen dann in den Variablen $1, $2, $3 bis $N. Die Anzahl der übergebenden Parameter steht in der Variablen $#.
ole@defiant:~> function sagmal () { > echo Es wurden $# Parameter eingegeben. > echo Der erste Parameter lautet: $1 > } ole@defiant:~> sagmal Hallo Welt Es wurden 2 Parameter eingegeben. Der erste Parameter lautet: Hallo ole@defiant:~> sagmal "Hallo Welt" Es wurden 1 Parameter eingegeben. Der erste Parameter lautet: Hallo Welt
Sie können im Beispiel deutlich die Auswirkungen der Anführungszeichen sehen.
ole@defiant:~> function werist () { > finger $1 > ps -aux | grep $1 > } ole@defiant:~> werist root Login: root Name: root Directory: /root Shell: /bin/bash Last login Wed Oct 9 08:13 (CEST) on tty1 New mail received Thu Oct 10 11:20 2002 (CEST) Unread since Fri May 3 18:15 2002 (CEST) No Plan. root 1 0.0 0.0 448 64 ? S 08:14 0:04 init [5] root 2 0.0 0.0 0 0 ? SW 08:14 0:00 [keventd] root 3 0.0 0.0 0 0 ? SW 08:14 0:00 [kapmd] root 4 0.0 0.0 0 0 ? SWN 08:14 0:00 [ksoftirqd_CPU0] root 5 0.0 0.0 0 0 ? SW 08:14 0:00 [kswapd] ...