Eu tenho um script bash chamando um script python do qual desejo alimentar o conteúdo filevia 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 filedado para o script bash como stdin para o script python main.py.
Observe que filepode 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.shcomo 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.pycom o conteúdo do email no stdin. Mas a combinação não parece funcionar.
localLDA do postfix ou algo mais, comoprocmailoudeliver? existe algo no seu~/.bashrcque possa perturbar o meio ambiente, vistomain.pyquando executado a partir de dentroscript.sh? talvez registre o ambiente executando algo como{ typeset -p ; echo } >> "/tmp/forward.log"dentro do script.sh.