2016-03-22 10 views
0

Ich bin neu bei Shell-Skripten. Ich habe diesen Code unten und ich kenne den Unterschied zwischen ihnen nicht. Ich suchte nach Präzedenzoperator(), und ich konnte nicht herausfinden, welchen Unterschied es in dieser Zeile unten macht.Was ist der Effekt von() auf der einfachen Codezeile?

stdbuf -o 0 -e 0 ../../<program> <input file> &> OutputFile.txt & 

(stdbuf -o 0 -e 0 ../..<program> <input file> &) &> OutputFile.txt 

Vielen Dank im Voraus für die Antwort.

+1

Suchen Sie nach "subshell". – pfnuesel

+1

Es führt den beiliegenden Befehl in einer Subshell aus. – JNevill

Antwort

1

Das erste Beispiel wird unter <program>stdbuf mit Standardausgabe und Standardfehler OutputFile.txt im Hintergrund umgeleitet (&).

Die zweiten Durchläufe unter <program>stdbuf im Hintergrund (&) alle in einer Unterschale, die ihre Standardfehler und die Standardausgabe zu OutputFile.txt weitergeleitet hat.

Was die praktischen Auswirkungen dieses Unterschieds sind, kann ich jedoch nicht genau sagen.

+0

Vielen Dank für die Antwort! –

0

Wie bereits in den Kommentaren erwähnt, die (...) beiliegenden Anweisungen werden in der subshell ausgeführt.

das folgende Fragment Stellen Sie sich vor:

echo 'line1' > /tmp/file 
echo 'line2' >> /tmp/file 
echo 'line3' >> /tmp/file 

eine Sub-Shell verwenden, können Sie die ganze Subshell umleiten, so dass die oben als

(
echo 'line1' 
echo 'line2' 
echo 'line3' 
) >/tmp/file 

geschrieben werden konnten beide das gleiche Ergebnis, aber die zweite ist kürzer, sauberer und einfacher modifizierbar.

Verwandte Themen