Hallo Liste,
heute hat mich mein intuitives Verständnis der shell in die Irre geführt und einiges an Zeit gekostet, um den "Fehler" zu finden. Um euch den Spaß nicht zu vorzuenthalten, hier ein kurzes Quiz, das jeder für sich selbst beantworten kann und dabei eventuell auch etwas Neues über die shell lernt:
1. Welche Ausgabe wird für folgendes shell-Fragment generiert?:
( set -e; echo Foo; false; echo Bar ); echo Baz
a) "Foo\n" b) "Foo\nBaz\n" c) "Foo\nBar\nBaz\n"
2. Welche Ausgabe wird durch eine leichte Modifikation generiert?:
( set -e; echo Foo; false; echo Bar ) && echo Baz
a) "Foo\n" b) "Foo\nBaz\n" c) "Foo\nBar\n" d) "Foo\nBar\nBaz\n"
1 sollte intuitiv klar sein, aber bei 2 habe ich echt verzweifelt.
Viel Spaß bei Knobeln (oder einfach ausprobieren), Mathias
Hi,
On Tue, Sep 24, 2024 at 08:49:47PM +0200, Mathias Krause wrote:
Welche Ausgabe wird für folgendes shell-Fragment generiert?:
( set -e; echo Foo; false; echo Bar ); echo Baz
a) "Foo\n" b) "Foo\nBaz\n" c) "Foo\nBar\nBaz\n"
Welche Ausgabe wird durch eine leichte Modifikation generiert?:
( set -e; echo Foo; false; echo Bar ) && echo Baz
a) "Foo\n" b) "Foo\nBaz\n" c) "Foo\nBar\n" d) "Foo\nBar\nBaz\n"
1 sollte intuitiv klar sein, aber bei 2 habe ich echt verzweifelt.
Nice. Und wer richtig Spass haben will kann ja auch noch:
echo Baz && ( set -e; echo Foo; false; echo Bar )
probieren.
Das Verhalten ist übrigens in IEEE 1003.1 "Shell & Utilities" dokumentiert.
Grüsse Andreas
lug-dd@mailman.schlittermann.de