Beschreiben Sie die Aufgabe/Funktion der nachstehenden Kommandodatei,indem Sie zuvor die einzelnen Befehle und ihre Auflösung durch die Kornshell erläutern.
1 #!/usr/bin/ksh
2
3 pick1() {
4 eval 'echo $' "$pick_index"
6 }
7 pick() {
8 0LD_IFS=IFS
9 delimiter="$1"
10 shift
11 pick_index="$1"
12 shift
13 IFS=" "$delimiter
14 pick1 $*
15 IFS=$OLD_IFS
16 unset pick_jndex
17 }
t c
19 version=$(uname -r)
20 echo $(pick . 1 $version).$(pick . 2 $version)
Vile Spaß
Klausur!!!prüngen sie selbst :D
Nun, ohne es eingetippt zu haben, würde ich einfach mal sagen, dass die Funktion pick von einer gegebenen Zeichenkette (3. Argument) das Feld mit Nummer X (2. Argument) ausgibt. Felder werden durch das Trennzeichen (1. Argument) definiert.
Im übrigen steckt ein Bug in der Funktion: In Zeile 8 muss es heissen. Und da der Inhalt von delimiter auch ein Space oder Tab sein könnte, sollte man es immer in "" einschliessen, also Zeile 13 wie folgt korrigieren:Und zu guter Letzt bitte das Zurücksetzen des IFS ebenfalls mit "" verzieren:So. Wenn nun explizit die ksh verlangt wird, sollte man aber auch die ksh-Features nutzen! So verwendet die Funktion pick beispielsweise die Variablen OLD_IFS, delimiter und pick_index. So wie geschrieben sind das alles globale Variablen, was jede Mende nette Nebeneffekte auslösen kann, wenn gleichlautende Variablen noch irgendwo später im Skript vorkommen. Daher diese Variablen bitte lokal zur Funktion machen! Das ist sogar ganz einfach; es reicht eine Zeile 7.5:So weit, so gut. Jetzt hätte ich aber gerne von Dir gewusst, ob Du eine konkrete Frage zu dem Skript hast, einfach nur gerne eine Referenz-Erklärung gehabt hättest oder das ganze zur Unterhaltung gepostet hast? Dann hätte es nämlich besser in "Fun&Joke" oder Smalltalk" gepasst.
Jochen
Im übrigen steckt ein Bug in der Funktion: In Zeile 8 muss es
Code: Select all
OLD_IFS="$IFS"
Code: Select all
IFS=" $delimiter"
Code: Select all
IFS="$OLD_IFS"
Code: Select all
typeset OLD_IFS delimiter pick_index
Jochen
Die grösste Lüge der EDV? "Mal eben..."
-
- prolinux-forum-admin
- Posts: 1444
- Joined: 26. Jun 2004 21:18
- Contact: