Hallo, Ronny Seffner <[email protected]> (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 - [email protected] https://ssl.schlittermann.de/mailman/listinfo/lug-dd
