Eu tenho um script bash chamando um script python do qual desejo alimentar o conteúdo file
via stdin. Chamando o script bash como:
./script.sh < file
E o conteúdo de script.sh
:
#! /usr/bin/env bash
pushd /some/python/virtual/environment/working/dir
source venv/bin/activate
python main.py ??????
deactivate
popd
Eu não tenho idéia do que preencher para ??????
passar o conteúdo do file
dado para o script bash como stdin para o script python main.py
.
Observe que file
pode ser um arquivo de texto substancial e o uso do bash nãoread
é desejável.
Usar stdin ao chamar o script bash é um requisito. Sou flexível para passar o que quer que seja main.py
.
Alguma idéia lá fora, como lidar com esse enigma?
Adição
A resposta do @cas deixou claro para mim que também preciso explicar em que contexto tento usar script.sh
.
Quero usar script.sh
como um script de encaminhamento~/.forward
, com o conteúdo:
|/path/to/script.sh
Qual postfix chama como /path/to/script.sh
; o log é claro sobre isso. Um teste simples usando uma versão simplificada do script python, como:
|/path/to/simple/main.py
Demonstra que o postfix chama main.py
com o conteúdo do email no stdin. Mas a combinação não parece funcionar.
local
LDA do postfix ou algo mais, comoprocmail
oudeliver
? existe algo no seu~/.bashrc
que possa perturbar o meio ambiente, vistomain.py
quando executado a partir de dentroscript.sh
? talvez registre o ambiente executando algo como{ typeset -p ; echo } >> "/tmp/forward.log"
dentro do script.sh.