On Sat, 18 Apr 2009 21:02:34 +0200, "Daniel C. Dowse" <dcdowse(at)gmx.net> wrote:
> das \ ist fuer die direkte eingabe gedacht. also um im Terminal ein
> Newline zu erzeugen.
Hmmm... ich dachte immer, es wäre genau das Gegenteil, d. h. ein
Mittel, um der Shell, die vom Terminal liest, zu zeigen, daß das
folgende Newline eben *kein* Newline sein soll, was ja üblicher-
weise die Shell veranlaßt, den gerade gegebenen Befehl auszuführen.
% ls \ <=== noch nicht ausführen
-laFG /etc <=== jetzt komplett: ls -laFG /etc ausführen
% ls <=== ls ausführen
% -laFG /etc <=== kennichnich
In Skripten, wo es sinngemäß heißt, daß eine Zeile einem Befehl
(oder einer Befehlsfolge) entspricht, ist das ebenso. Ein gutes
Beispiel ist Makefile, wo make pro Zeile eine Shell aufmacht und
den Befehl dann ausführt; soll ein Befehl über mehrere Zeilen
gehen, dient \ dazu, den Zeilenumbruch zu maskieren, d. h. ihn
seiner Funktion zu berauben.
irgendein_ziel: bla bli
if [ "$(LLSTIL)" = "qual" ]; then \
echo " (qualifizierter Lebenslauf)"; \
else \
echo " (persoenlicher Lebenslauf)"; \
fi
Wollte man also die \ weglassen, müßte alles in ein und derselben
Zeile stehen.
Im Gegensatz dazu dient bei sh-Skripten die Leere Anweisung ;
dazu, einen Zeilenumbruch vorzuspiegeln, also quasi dazu, wie
Du sagtest, ein Newline zu erzeugen:
for f in *.txt; do
cp $f /tmp
done
Wird ; weggelassen, muß ein echtes Newline erfolgen:
for f in *.txt
do
cp $f /tmp
done
Hoffentlich sind damit alle Klarheiten hinreichend beseitigt. :-)
PS. Auch in C kennt man ; in beliebten Beschäftigungstherapien
wie for(;;); und while(1);. :-)
-- Polytropon >From Magdeburg, Germany Happy FreeBSD user since 4.0 Andra moi ennepe, Mousa, ... To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Sat 18 Apr 2009 - 21:36:49 CEST