Tengo un script bash que invoca un script python del que quiero alimentar el contenido a file
través de stdin. Llamando al script bash como:
./script.sh < file
Y los contenidos de script.sh
:
#! /usr/bin/env bash
pushd /some/python/virtual/environment/working/dir
source venv/bin/activate
python main.py ??????
deactivate
popd
No tengo idea de qué llenar para ??????
pasar el contenido de file
dado al script bash como stdin al script python main.py
.
Tenga en cuenta que file
puede ser un archivo de texto sustancial y noread
es deseable usar bash .
Usar stdin al invocar el script bash es un requisito. Soy flexible para pasar lo que sea main.py
.
¿Alguna idea sobre cómo abordar este enigma?
adición
La respuesta de @cas me dejó claro que también necesito explicar en qué contexto trato de usar script.sh
.
Quiero usar script.sh
como script de reenvío~/.forward
, con el contenido:
|/path/to/script.sh
Qué postfix llama como /path/to/script.sh
; el registro es claro al respecto. Una prueba simple con una versión reducida del script de Python, como:
|/path/to/simple/main.py
Demuestra que postfix llama main.py
con el contenido del correo en el stdin. Pero la combinación no parece funcionar.
local
LDA de postfix o alguna otra cosa, comoprocmail
odeliver
? ¿Hay algo en ti~/.bashrc
que pueda perturbar el medio ambiente como se vemain.py
cuando se ejecuta desde dentroscript.sh
? tal vez registre el entorno ejecutando algo como{ typeset -p ; echo } >> "/tmp/forward.log"
dentro de script.sh.