next | next | up | down | Inhalt | Uebungen | Complete | Kommentar

all, section 6.5.

6.5.  Textersatz für Variablen

Die Werte von Shell-Variablen werden durch $name abgerufen. Die Werte stammen aus Zuweisungen. Eine Folge von Zuweisungen wird von rechts bearbeitet. Wenn nicht durch "..." geschützt wird, wird der Wert dann noch an IFS zerlegt. Der Wert wird nur einmal ersetzt:

$ set -x; IFS=:; a=$b b='c:d    e'
IFS=:
b=c:d   e a=c:d e
$ echo $a "$b"
+ echo c d      e c:d   e 
c d     e c:d   e
$ a='$b'; echo $a
$b

Die Shell setzt einige spezielle Variablen:

$1 ...  $9   Argumente
$#           Anzahl der Argumente
$* und $@    alle Argumente
"$*"         alle Argumente als ein Wort
"$@"         alle Argumente als einzelne Wörter
$-           Optionen der aktuellen Shell
$?           Exit-Code des letzten Kommandos
$!           Prozeßnummer des letzten Hintergrund-Kommandos
$$           Prozeßnummer der Shell (falsch bei Sub-Shell)

Das System verwendet einige Variablen; eine Auswahl:

HOME    login                 Heimatkatalog (für cd)
IFS     space tab newline     trennende Zeichen für Worte
MAIL    leer                  (versucht, Post zu überwachen)
PATH    :/bin:/usr/bin        Suchpfade für Kommandos
PS1     '$ '                  Prompt
PS2     '> '                  Prompt bei Fortsetzung
SHELL   /bin/sh               Name der Shell
TERM    login                 Terminaltyp
TZ      MEZ-1MESZ,M4.5,M9.5   Interpretation des Datums

Mit Doppelanführungszeichen kann man Variablen einigermaßen als Wertelisten verwenden:

$ tee a.c b.c c.c </dev/null
$ o=  
$ for i in *.c; do o="$o `basename $i .c`.o"; done
$ echo $o
a.o b.o c.o

Dabei muß man allerdings sehr vorsichtig mit Zwischenraum umgehen:

$ ls
a    a b  b
$               # Doppelpunkt und Zeilentrenner
$ IFS=':	
> '
$ f=; for i in `ls`; do f="$f:$i"; done
$ set $f
$ echo $2
a b


back | next | up | down | Inhalt | Uebungen | Complete | Kommentar


Created by unroff & hp-tools. © by Hans-Peter Bischof. All Rights Reserved (1997).

Last modified 03/July/97