Hallo, Ronny Seffner <ro...@seffner.de> (Fr 20 Jan 2012 23:32:12 CET): > Guten Abend Heiko, > > > begin/end? Was ist das? Ich denke, das war Pascal, oder? > > Bei "if" ist die Sache klar, if -> else, if -> fi und else -> fi sind > Begrenzer von Befehlsblöcken. Ich denke aber auch schon "(" und ")" um > mehrere Befehle gesetzt zu haben um diese im Zusammenhang zu betrachten. > Angenommen ich will in Abhängigkeit vom Ergebnis von "test" zwei Befehle, > diese aber unabhängig von deren return ausführen, da nehme ich die Klammern > (quasi als begin ... end) > > '[ -e &file ] && (echo "delete $file"; rm $file)' - für mich liest sich > "("=begin und ")"=end ;-)
[ -e "$file" ] && (echo "delete $file"; rm "$file") Ja, so kann man das betrachten, es gibt aber einen subtilen Unterschied zwischen ( cmd; cmd … ) und { cmd; cmd; …; }, ersteres findet in einer Subshell statt, letzteres dient nur zum Gruppieren und ist keine eigene Shell. unset FOO; { FOO=bar; }; echo $FOO unset FOO; ( FOO=bar ); echo $FOO -- Heiko
signature.asc
Description: Digital signature
_______________________________________________ Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd