Viele grosse Aenderungen
This commit is contained in:
@ -52,7 +52,12 @@ ausf
|
||||
|
||||
Dann kann das Skript gestartet werden. Da sich aus Sicherheitsgr<67>nden auf den meisten Systemen das aktuelle Verzeichnis nicht im Pfad des Benutzers befindet, mu<6D> man der Shell noch mitteilen, wo sie zu suchen hat: Mit \texttt{./name} wird versucht, im aktuellen Verzeichnis (\texttt{./}) ein Programm namens \texttt{name} auszuf<75>hren.
|
||||
|
||||
Auf den meisten Systemen befindet sich im Pfad der Eintrag \texttt{\~{}/bin} bzw. \texttt{/home/benutzername/bin}, das bedeutet da<64> man Skripte die immer wieder benutzt werden sollen dort ablegen kann, so da<64> sie auch ohne eine Pfadangabe gefunden werden. Wie der Pfad genau aussieht kann man an der Shell durch Eingabe von \texttt{echo \$PATH}\index{\$PATH=\texttt{\$PATH}} herausfinden.
|
||||
Auf den meisten Systemen befindet sich im Pfad ein Verweis auf das Verzeichnis
|
||||
\texttt{bin} unterhalb des Home-Verzeichnisses eines Benutzers. Das bedeutet
|
||||
da<EFBFBD> man Skripte die immer wieder benutzt werden sollen dort ablegen kann, so
|
||||
da<EFBFBD> sie auch ohne eine Pfadangabe gefunden werden. Wie der Pfad genau aussieht
|
||||
kann man an der Shell durch Eingabe von \texttt{echo
|
||||
\$PATH}\index{\$PATH=\texttt{\$PATH}} herausfinden.
|
||||
|
||||
|
||||
\subsection{R<EFBFBD>ckgabewerte}\label{exitcode}\index{R<EFBFBD>ckgabewert|(textbf}\index{Exit-Code|see{R<EFBFBD>ckgabewert}}\index{Exit-Status|see{R<EFBFBD>ckgabewert}}
|
||||
@ -140,16 +145,49 @@ behandelt (expandiert).
|
||||
|
||||
|
||||
\section{Vordefinierte Variablen}\label{vordefinierte_variablen}\index{Variablen}\index{vordefinierte Variablen}
|
||||
\index{\$n=\texttt{\$}$n$|(textbf}\index{\$*=\texttt{\$*}|(textbf}\index{\$@=\texttt{\$@}|(textbf}\index{\$\#=\texttt{\$\#}|(textbf}\index{\$?=\texttt{\$?}|(textbf}\index{\$\$=\texttt{\$\$}|(textbf}\index{\$!!=\texttt{\$!!}|(textbf}\index{\$ERRNO=\texttt{\$ERRNO}|(textbf}\index{\$PWD=\texttt{\$PWD}|(textbf}\index{\$OLDPWD=\texttt{\$OLDPWD}|(textbf}
|
||||
\index{ERRNO=\texttt{ERRNO}|see{\$ERRNO}}\index{PWD=\texttt{PWD}|see{\$PWD}}\index{OLDPWD=\texttt{OLDPWD}|see{\$OLDPWD}}
|
||||
\index{\$n=\texttt{\$}$n$|(textbf}
|
||||
\index{\$*=\texttt{\$*}|(textbf}
|
||||
\index{\$@=\texttt{\$@}|(textbf}
|
||||
\index{\$\#=\texttt{\$\#}|(textbf}
|
||||
\index{\$?=\texttt{\$?}|(textbf}
|
||||
\index{\$\$=\texttt{\$\$}|(textbf}
|
||||
\index{\$!!=\texttt{\$!!}|(textbf}
|
||||
\index{\$ERRNO=\texttt{\$ERRNO}|(textbf}
|
||||
\index{\$IFS=\texttt{\$IFS}|(textbf}
|
||||
\index{\$PWD=\texttt{\$PWD}|(textbf}
|
||||
\index{\$OLDPWD=\texttt{\$OLDPWD}|(textbf}
|
||||
\index{ERRNO=\texttt{ERRNO}|see{\$ERRNO}}
|
||||
\index{IFS=\texttt{IFS}|see{\$IFS}}
|
||||
\index{PWD=\texttt{PWD}|see{\$PWD}}
|
||||
\index{OLDPWD=\texttt{OLDPWD}|see{\$OLDPWD}}
|
||||
|
||||
Es gibt eine Reihe von vordefinierten Variablen, deren Benutzung ein wesentlicher Bestandteil des Shell-Programmierens ist.
|
||||
Es gibt eine Reihe von vordefinierten Variablen, deren Benutzung ein
|
||||
wesentlicher Bestandteil des Shell-Programmierens ist.
|
||||
|
||||
Die wichtigsten eingebauten Shell-Variablen sind:\nopagebreak
|
||||
\LTXtable{\textwidth}{tab_vordefinierte_variablen.tex}
|
||||
|
||||
\texttt{\$ERRNO}, \texttt{\$PWD} und \texttt{\$OLDPWD} werden nicht von jeder Shell gesetzt.
|
||||
\index{\$n=\texttt{\$}$n$|)}\index{\$*=\texttt{\$*}|)}\index{\$@=\texttt{\$@}|)}\index{\$\#=\texttt{\$\#}|)}\index{\$?=\texttt{\$?}|)}\index{\$\$=\texttt{\$\$}|)}\index{\$!!=\texttt{\$!!}|)}\index{\$ERRNO=\texttt{\$ERRNO}|)}\index{\$PWD=\texttt{\$PWD}|)}\index{\$OLDPWD=\texttt{\$OLDPWD}|)}
|
||||
Die Variable \texttt{\$IFS} enth<74>lt per Default die Blank-Zeichen, also
|
||||
Newline, Space und Tab. Man kann sie aber auch mit anderen Zeichen
|
||||
<EFBFBD>berschreiben. Diese werden immer dann als Trennzeichen benutzt, wenn ein
|
||||
String in mehrere Teile zerlegt werden soll, also beispielsweise in
|
||||
\texttt{for}-Schleifen oder beim zeilenweisen Einlesen mit \texttt{read}. Ein
|
||||
gutes Beispiel gibt es in dem Beispielskript zu \texttt{printf} (Abschnitt
|
||||
\ref{printf}).
|
||||
|
||||
\texttt{\$ERRNO}, \texttt{\$PWD} und \texttt{\$OLDPWD} werden nicht von jeder
|
||||
Shell gesetzt.
|
||||
\index{\$n=\texttt{\$}$n$|)}
|
||||
\index{\$*=\texttt{\$*}|)}
|
||||
\index{\$@=\texttt{\$@}|)}
|
||||
\index{\$\#=\texttt{\$\#}|)}
|
||||
\index{\$?=\texttt{\$?}|)}
|
||||
\index{\$\$=\texttt{\$\$}|)}
|
||||
\index{\$!!=\texttt{\$!!}|)}
|
||||
\index{\$ERRNO=\texttt{\$ERRNO}|)}
|
||||
\index{\$IFS=\texttt{\$IFS}|)}
|
||||
\index{\$PWD=\texttt{\$PWD}|)}
|
||||
\index{\$OLDPWD=\texttt{\$OLDPWD}|)}
|
||||
|
||||
|
||||
\section{Variablen-Substitution}\index{Variablen>-Substitution|(textbf}\index{Substitution|see{Variablen-Subst.}}\index{Variablen|(textbf}
|
||||
@ -307,12 +345,12 @@ einem Konstrukt in der Form \texttt{i=\$((\$i + 1))} k
|
||||
Berechnungen angestellt werden.
|
||||
|
||||
Dabei wird der Ausdruck in den Klammern bewertet als ob er in doppelten
|
||||
Anf<EFBFBD>hrungszeichen stehen w<>rde. Das bedeutet zum Einen, da<64> man auch mit
|
||||
Variablen rechnen kann, zum anderen macht es das Quoten des Sternchens
|
||||
An\-f<EFBFBD>h\-rungs\-zei\-chen stehen w<>rde. Das bedeutet zum Einen, da<64> man auch
|
||||
mit Variablen rechnen kann, zum anderen macht es das Quoten des Sternchens
|
||||
<EFBFBD>berfl<EFBFBD>ssig.
|
||||
|
||||
F<EFBFBD>r komplexere Berechnungen steht das Tool \texttt{bc} (Siehe Abschnitt
|
||||
\ref{bc}) zur Verf<EFBFBD>gung.
|
||||
\ref{bc}) zur Ver\-f<EFBFBD>\-gung.
|
||||
|
||||
\index{Arithmetik-Expansion|)}
|
||||
|
||||
@ -615,7 +653,7 @@ auf einen anderen Rechner portiert und die Datei vergi
|
||||
legt man eine solche Datei sinnvoll ab?
|
||||
|
||||
Um diesem <20>rger zu entgehen, sollte man in einer solchen Situation ein
|
||||
Here-Dokument benutzen.
|
||||
Here-Do\-ku\-ment benutzen.
|
||||
|
||||
\emph{Umlenkung mit Hilfe von Dateideskriptoren:}\nopagebreak
|
||||
\LTXtable{\textwidth}{tab_datenstroeme_deskriptoren.tex}
|
||||
|
Reference in New Issue
Block a user