Ich arbeite an einer Zuweisung für Pipes in Linux. Ich habe ein Programm, das hello world
druckt. Es dauert kein Argument. Aber wenn ich das Programm ausführen und Befehlszeilenargumente wie ./a ls | wc
bereitstellen. Ich bekomme die Ausgabe 0 2 11
, d.h. die Ausgabe von hello world
wird durch die Leitung an wc
übergeben. Kann mir bitte jemand dieses Verhalten erklären.Verwenden von Pipes in Befehlszeilenargumenten
-1
A
Antwort
2
Da Ihr Programm hat keine Argumente, die Tatsache, dass Sie es ls
als Argument übergeben macht keinen Unterschied zu seinem Ausgang: Es wird dieses Argument ignoriert und noch hello world
emittiert, wie es wäre, wenn ls
worden waren weitergegeben seine Argumentliste.
Verstehen Sie, dass eine Pipeline einen FIFO erstellt - das heißt, es verbindet zwei Programme.
./a ls ## this program's output...
wc ## ...is connected to this program's input.
Die Rohrleitung ist somit kein Argument zu a
; Es ist eine Anweisung an die Shell, wie man die Ausgabe von a
routet, in diesem Fall eine Anweisung, es in die Standardeingabe von wc
zu routen.
Verwandte Themen
- 1. Verwenden von Befehlszeilenargumenten in VBScript
- 2. Verwenden von Kategorie-Feeds für Yahoo Pipes
- 3. C++ Verwenden von Fenstern namens Pipes
- 4. Verwenden von Named Pipes asynchron mit StreamWriter
- 5. Behandeln von Befehlszeilenargumenten in PowerShell
- 6. Sortieren von Befehlszeilenargumenten in C
- 7. "Conditional" Parsen von Befehlszeilenargumenten
- 8. Ausblenden von Befehlszeilenargumenten
- 9. Rekonstruktion von Java-Befehlszeilenargumenten
- 10. Übergeben von Befehlszeilenargumenten in django runscript
- 11. Hinzufügen von Befehlszeilenargumenten mit Flags in Python3
- 12. Konvertierung von R-Befehlszeilenargumenten in Ganzzahlvektoren
- 13. Analysieren von Befehlszeilenargumenten in einem Ruby-Skript
- 14. Lesen von Befehlszeilenargumenten mit Eingabeumleitungsoperator in bash
- 15. Leerzeichen in Java-Befehlszeilenargumenten
- 16. Behandeln von Befehlszeilenargumenten und Spring
- 17. Xcode und Übergabe von Befehlszeilenargumenten
- 18. Fehler beim Entnehmen von Befehlszeilenargumenten in Python
- 19. Übergeben von Befehlszeilenargumenten in Visual Studio 2010?
- 20. Abrufen von Befehlszeilenargumenten in Common Lisp
- 21. Löschen von OpenCL-Pipes
- 22. Verwenden von Pipes, um Zeichenfolgen zwischen Prozessen zu senden
- 23. Verhindern von Named Pipes-Konflikt
- 24. Konvertieren von Befehlszeilenargumenten in ein Array in Bash
- 25. ksh - Hinzufügen von Befehlszeilenargumenten zu Array
- 26. Übergeben von Variablen zwischen "Pipes" in Gulp
- 27. Übergabe von Java-Befehlszeilenargumenten an ein Plugin
- 28. Fabfiles mit Befehlszeilenargumenten
- 29. Debuggen Named Pipes in WCF
- 30. Übergeben von Befehlszeilenargumenten an ein SML-Skript
Was ist zu erklären? Warum erwartest du das nicht? –
... diese Frage war nicht rhetorisch: Wenn wir nicht wissen, was Ihr gegenwärtiges Verständnis ist, wie können wir eine Antwort mit Sicherheit schreiben, dass wir alle Probleme mit diesem Verständnis angehen? –
(Wenn Sie aus Windows kommen, sind Sie vielleicht an eine Welt gewöhnt, in der Befehle ihre eigenen Argumentlisten parsen, vorausgesetzt, eine Zeichenfolge entspricht genau der vom Benutzer bereitgestellten. So funktioniert das nicht: Die Shell analysiert den unformatierten Text , und das einzige, was ein Befehl bekommt, ist ein C-Array einzelner Strings, eine pro Argument. –