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 file
angegeben an das Bash-Skript als Standard an das Python-Skript zu übergeben main.py
.
Beachten Sie, dass file
bash eine wesentliche Textdatei und verwendet werden kann read
ist 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.sh
als 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.
local
LDA von Postfix oder etwas anderes, wieprocmail
oderdeliver
? Gibt es irgendetwas in dir,~/.bashrc
das die Umgebung stören könnte,main.py
wenn du von innenscript.sh
rennst? Vielleicht protokollieren Sie die Umgebung, indem Sie etwas wie{ typeset -p ; echo } >> "/tmp/forward.log"
in script.sh ausführen.