Saya punya skrip bash dengan skrip python. Saya ingin memberi makan konten filevia 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 filediberikan ke skrip bash sebagai stdin ke skrip python main.py.
Perhatikan bahwa filedapat menjadi file teks besar dan menggunakan bash readadalah 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.shsebagai 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.pydengan isi surat di stdin. Tetapi kombinasi itu tampaknya tidak berhasil.
localLDA postfix sendiri atau sesuatu yang lain, sepertiprocmailataudeliver? Adakah sesuatu di dalam diri Anda~/.bashrcyang dapat mengganggu lingkungan seperti yang terlihatmain.pyketika dijalankan dari dalamscript.sh? mungkin mencatat lingkungan dengan menjalankan sesuatu seperti{ typeset -p ; echo } >> "/tmp/forward.log"di dalam script.sh.