Ho uno script bash che invoca uno script Python di cui voglio alimentare il contenuto filetramite 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 filedato allo script bash come stdin allo script python main.py.
Si noti che filepuò 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.shcome 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.pycon il contenuto della posta sullo stdin. Ma la combinazione non sembra funzionare.
localLDA di Postfix o qualcos'altro, comeprocmailodeliver? c'è qualcosa nel tuo~/.bashrcche potrebbe disturbare l'ambiente visto damain.pyquando viene eseguito dall'internoscript.sh? forse registrare l'ambiente eseguendo qualcosa di simile{ typeset -p ; echo } >> "/tmp/forward.log"all'interno di script.sh.