Klausur!!!prüngen sie selbst :D

Post Reply
Message
Author
sunset

Klausur!!!prüngen sie selbst :D

#1 Post by sunset »

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ß :shock:

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#2 Post by jochen »

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

Code: Select all

OLD_IFS="$IFS" 
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:

Code: Select all

IFS=" $delimiter"
Und zu guter Letzt bitte das Zurücksetzen des IFS ebenfalls mit "" verzieren:

Code: Select all

IFS="$OLD_IFS"
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:

Code: Select all

typeset OLD_IFS delimiter pick_index
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
Die grösste Lüge der EDV? "Mal eben..."

GehtsNoch

#3 Post by GehtsNoch »

Sag mal schlaft ihr for euren pc oder wie !!! wo möglich noch mit ihnen oder???

klopskuchen
prolinux-forum-admin
Posts: 1444
Joined: 26. Jun 2004 21:18
Contact:

#4 Post by klopskuchen »

> Sag mal schlaft ihr for euren pc oder wie !!! wo möglich noch mit ihnen oder???
Nicht immer. Hin und wieder verwenden wir etwas Zeit auf den korrekten Umgang mit unserer Muttersprache.
When all else fails, read the instructions .

Post Reply