Ich habe ein Bash-Skript, das ein Python-Skript aufruft, dessen Inhalt ich fileüber stdin füttern möchte . Rufen Sie das Bash-Skript wie folgt auf:
./script.sh < file
Und der Inhalt von script.sh:
#! /usr/bin/env bash
pushd /some/python/virtual/environment/working/dir
source venv/bin/activate
python main.py ??????
deactivate
popd
Ich habe keine Ahnung, was ich ausfüllen soll ??????, um den Inhalt von fileangegeben an das Bash-Skript als Standard an das Python-Skript zu übergeben main.py.
Beachten Sie, dass filebash eine wesentliche Textdatei und verwendet werden kann readist nicht wünschenswert.
Die Verwendung von stdin beim Aufrufen des Bash-Skripts ist erforderlich. Ich bin flexibel, um alles weiterzugeben main.py.
Irgendwelche Ideen, wie man dieses Rätsel lösen kann?
Zusatz
Die Antwort von @cas machte mir klar, dass ich auch erklären muss, in welchem Kontext ich versuche zu verwenden script.sh.
Ich möchte script.shals Weiterleitung verwenden in verwenden ~/.forward, mit dem Inhalt:
|/path/to/script.sh
Welches Postfix heißt /path/to/script.sh ; Das Protokoll ist darüber klar. Ein einfacher Test mit einer verkleideten Version des Python-Skripts, wie:
|/path/to/simple/main.py
Demonstriert, dass Postfix aufruft main.py mit dem Inhalt der Mail auf dem Standard aufruft. Aber die Kombination scheint nicht zu funktionieren.
localLDA von Postfix oder etwas anderes, wieprocmailoderdeliver? Gibt es irgendetwas in dir,~/.bashrcdas die Umgebung stören könnte,main.pywenn du von innenscript.shrennst? Vielleicht protokollieren Sie die Umgebung, indem Sie etwas wie{ typeset -p ; echo } >> "/tmp/forward.log"in script.sh ausführen.