Saya punya skrip bash dengan skrip python. Saya ingin memberi makan konten file
via stdin. Memanggil skrip bash seperti:
./script.sh < file
Dan isi dari script.sh
:
#! /usr/bin/env bash
pushd /some/python/virtual/environment/working/dir
source venv/bin/activate
python main.py ??????
deactivate
popd
Saya tidak tahu apa yang harus diisi untuk ??????
meneruskan konten yang file
diberikan ke skrip bash sebagai stdin ke skrip python main.py
.
Perhatikan bahwa file
dapat menjadi file teks besar dan menggunakan bash read
adalah tidak diinginkan.
Menggunakan stdin saat menjalankan skrip bash adalah persyaratan. Saya fleksibel untuk melewati apa pun main.py
.
Ada ide di luar sana bagaimana mengatasi teka-teki ini?
tambahan
Jawaban oleh @cas menjelaskan kepada saya bahwa saya juga perlu menjelaskan konteks yang saya coba gunakan script.sh
.
Saya ingin menggunakan script.sh
sebagai skrip penerusan~/.forward
, dengan isinya:
|/path/to/script.sh
Postfix mana yang memanggil /path/to/script.sh
; log jelas tentang itu. Sebuah tes sederhana menggunakan versi skrip python berpakaian, seperti:
|/path/to/simple/main.py
Menunjukkan bahwa postfix memang memanggil main.py
dengan isi surat di stdin. Tetapi kombinasi itu tampaknya tidak berhasil.
local
LDA postfix sendiri atau sesuatu yang lain, sepertiprocmail
ataudeliver
? Adakah sesuatu di dalam diri Anda~/.bashrc
yang dapat mengganggu lingkungan seperti yang terlihatmain.py
ketika dijalankan dari dalamscript.sh
? mungkin mencatat lingkungan dengan menjalankan sesuatu seperti{ typeset -p ; echo } >> "/tmp/forward.log"
di dalam script.sh.