Ho uno script bash che invoca uno script Python di cui voglio alimentare il contenuto file
tramite via stdin. Chiamando lo script bash come:
./script.sh < file
E i contenuti di script.sh
:
#! /usr/bin/env bash
pushd /some/python/virtual/environment/working/dir
source venv/bin/activate
python main.py ??????
deactivate
popd
Non ho idea di cosa compilare per ??????
passare il contenuto di file
dato allo script bash come stdin allo script python main.py
.
Si noti che file
può essere un file di testo sostanziale e l'utilizzo di bash nonread
è auspicabile.
L'uso di stdin quando si richiama lo script bash è un requisito. Sono flessibile per passare qualunque cosa main.py
.
Qualche idea là fuori su come affrontare questo enigma?
aggiunta
La risposta di @cas mi ha chiarito che ho anche bisogno di spiegare in quale contesto cerco di usare script.sh
.
Voglio usare script.sh
come script di inoltro in ~/.forward
, con il contenuto:
|/path/to/script.sh
Quale postfisso chiama come /path/to/script.sh
; il registro è chiaro al riguardo. Un semplice test che utilizza una versione ridotta dello script Python, come:
|/path/to/simple/main.py
Dimostra che postfix chiama main.py
con il contenuto della posta sullo stdin. Ma la combinazione non sembra funzionare.
local
LDA di Postfix o qualcos'altro, comeprocmail
odeliver
? c'è qualcosa nel tuo~/.bashrc
che potrebbe disturbare l'ambiente visto damain.py
quando viene eseguito dall'internoscript.sh
? forse registrare l'ambiente eseguendo qualcosa di simile{ typeset -p ; echo } >> "/tmp/forward.log"
all'interno di script.sh.