Polytropon <freebsd(at)edvax.de> wrote:
> Manfred Lotz wrote:
> > Ich kann in einem Script schreiben:
> >
> > cmd1 &&
> > cmd2 &&
> > cmd3
> >
> > ohne \ als continuation character zu benutzen.
> >
> > Es funktioniert. Frage: Sollte ich sowas dennoch vermeiden und lieber \
> > benutzen?
Das ist POSIX-Standard. Du kannst es bedenkenlos verwenden.
Folgendes ist aus der Shell-Grammatik von POSIX 1003.1-2001
bzw. SUSv3:
and_or : pipeline
| and_or AND_IF linebreak pipeline
| and_or OR_IF linebreak pipeline
Wobei <linebreak> eine Folge von beliebig vielen (auch
null) Newlines ist.
Das gleiche funktioniert übrigens auch bei Pipelines.
Ich schreibe öfters Pipelines mit Newlines ohne '\':
grep foo irgendwo |
cut ... |
sed ... |
awk ...
Man könnte sich natürlich immer darüber streiten, ob das
stilistisch »schön« ist, aber das ist reine Geschmacks-
frage. Funktionieren tut es jedenfalls.
> Da wäre meine Gegenfrage: In *welcher* Shell funktioniert das?
In allen, die POSIX-konform sind. Es funktioniert auch in
der /bin/sh von Solaris, und _das_ will etwas heißen. ;-)
(Nur um nicht missverstanden zu werden: Letztere ist nicht
POSIX-konform.)
> So man für mehrere Systeme scripten will, wo man die Eigenheiten
> der Shells nicht genau kennt, sollte man sich nicht auf das
> verlassen, was zu Hause in der eigenen Lieblings-Shell ohne
> Probleme funktioniert. :-)
Im Zweifelsfall ist es hilfreich, einfach mal zu gucken,
was der Standard dazu sagt. Dafür ist der ja da.
> Davon abgesehen, es liest sich auch irgendwie komisch. Man
> vermutet eher eine Folge von Hintergrundprogrammen, z. B.
Also, ich würde das nicht vermuten. Man muss halt schon
hingucken, ob da "&" oder "&&" steht. Bei "|" und "||"
musst Du ja auch genau hingucken.
> cmd1 &
> cmd2 &
> cmd3 &
Die kannst Du auch ohne Newlines schreiben:
cmd1 & cmd2 & cmd3 &
Das "&" terminiert ein Kommando ebenso wie ein Semikolon,
mit dem Unterschied, dass es asynchron ausgeführt wird.
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing b. M. Handelsregister: Registergericht Muenchen, HRA 74606, Geschäftsfuehrung: secnetix Verwaltungsgesellsch. mbH, Handelsregister: Registergericht Mün- chen, HRB 125758, Geschäftsführer: Maik Bachmann, Olaf Erb, Ralf Gebhart FreeBSD-Dienstleistungen, -Produkte und mehr: http://www.secnetix.de/bsd 'Instead of asking why a piece of software is using "1970s technology," start asking why software is ignoring 30 years of accumulated wisdom.' To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Sun 19 Apr 2009 - 00:15:49 CEST