|
|
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
|
|
Last modified 03/July/97