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

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Lug-dd maillist  -  Lug-dd@mailman.schlittermann.de
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Antwort per Email an