Compound Anweisungen


Ein Compound-Command ist eine pipe, eine list, beginnt mit einem reservierten Wort
oder dem Controloperator (.
Eine I/O-Umleitung  für eine pipe, list oder das time-Command  bezieht sich nur auf
das letzte Kommando. Soll sie sich auf alle Kommandos z.B. der pipe beziehen, so muß
alles durch   {     }    geschweifte Klammern zusammengefasst werden.

Wird eine I/O-Umleitung für iterative Kommandos gegeben, so gilt sie für alle Kommandos
innerhalb der Iteration. Die iterativen Anweisungen zählen zu den Compound-Commands.
Ein Compound-Command kann nicht einer Variablen zugewiesen werden



Klammerung von Kommandos { }

Es gibt 2 Arten der Klammerung von Kommandos.
 1.)   { kommandofolge;}
 2.)   ( kommandofolge )

  { kommandofolge ; } 
              Die geschweiften Klammern sind eine  Blockbildung.
              Die letzte Anweisung vor  } muß durch ein Semikolon ";" oder durch ein
	     "New Line" \   abgeschlossen werden.
              Der Klammer folgt häufig eine E/A-Umleitung oder ein Pipe.
              Diese Umleitung gilt dann für alle  Kommandos in der Klammer:
                    { who; pwd; ls; } > temp 


  ( kommandofolge )
               Die Kommandofolge zwischen den Klammern wird als selbständiger Prozeß
               abgearbeitet (Co-Process).
               Eine E/A-Umleitung gilt für alle Kommandos
               Als Exit-Status wird der Status der letzten Anweisung zurückgeliefert.
               Ein Wechsel des Directories gilt z.B. nur innerhalb der Klammer.

 
                    ( cd /usr/hahn/c/src
                      ls -1 | sort | tee temp ;
                      lp temp )
 

time Zeitmessung

Mit diesem Kommando kann die Zeit für eine pipe  gemessen werden.

time   pipeline 

time   egrep  'unix?|hahn'  /etc/passwd  |  sort

real    0m0.36s   			# elapsed time
user   0m0.03s			#  Zeit Userprozess
sys     0m0.14s 			#  Zeit im Systembereich (Kernel)

Achtung: Die ausgegebenen Zeiten können selbst dann differieren, wenn der Anwender allein am System arbeitet.