J'ai un script bash invoquant un script python dont je veux alimenter le contenu filevia stdin. Appel du script bash comme:
./script.sh < file
Et le contenu de script.sh:
#! /usr/bin/env bash
pushd /some/python/virtual/environment/working/dir
source venv/bin/activate
python main.py ??????
deactivate
popd
Je ne sais pas quoi remplir pour ??????passer le contenu de filegiven au script bash en tant que stdin au script python main.py.
Notez qu'il filepeut s'agir d'un fichier texte substantiel et l'utilisation de bash readn'est pas souhaitable.
L'utilisation de stdin lors de l'appel du script bash est une exigence. Je suis flexible pour passer quoi que ce soit main.py.
Avez-vous des idées sur la façon de résoudre cette énigme?
une addition
La réponse de @cas m'a fait comprendre que je dois également expliquer dans quel contexte j'essaie d'utiliser script.sh.
Je veux utiliser script.shcomme script de transfert dans ~/.forward, avec le contenu:
|/path/to/script.sh
Quel suffixe appelle comme /path/to/script.sh; le journal est clair à ce sujet. Un test simple utilisant une version déguisée du script python, comme:
|/path/to/simple/main.py
Montre que postfix appelle main.pyavec le contenu du courrier sur le stdin. Mais la combinaison ne semble pas fonctionner.
localLDA de postfix ou autre chose, commeprocmailoudeliver? y a-t-il quelque chose dans votre maison~/.bashrcqui pourrait perturber l'environnement tel que vu par lamain.pycourse de l'intérieurscript.sh? peut-être enregistrer l'environnement en exécutant quelque chose comme à l'{ typeset -p ; echo } >> "/tmp/forward.log"intérieur de script.sh.