file
Pythonスクリプトを呼び出すbashスクリプトがあり、stdinを介してコンテンツを提供したいと思います。次のようにbashスクリプトを呼び出します。
./script.sh < file
内容は次のとおりですscript.sh
。
#! /usr/bin/env bash
pushd /some/python/virtual/environment/working/dir
source venv/bin/activate
python main.py ??????
deactivate
popd
??????
与えられたコンテンツをfile
bashスクリプトに渡すために何を埋めるべきかわかりません。標準入力としてPythonスクリプトでmain.py
。
これはfile
大きなテキストファイルであり、bashを使用するread
ことはいいえ理想的な。
bashスクリプトを呼び出すにはstdinが必要です。私は何でもmain.py
。
このジレンマを解決する方法についてのアイデアはありますか?
次へ追加
@casの答えを通して、私はいくつかの文脈でscript.sh
。
script.sh
使いたい今後のスクリプトには以下が~/.forward
含まれます。
|/path/to/script.sh
どのサフィックスが呼び出されるかを/path/to/script.sh
ログに明確にします。簡単なテストのために、Pythonスクリプトの単純化されたバージョンを使用してください。たとえば、次のようになります。
|/path/to/simple/main.py
postfixが実際にmain.py
標準入力からメールの内容を呼び出すことを証明してください。しかし、この組み合わせは食べられないようです。
ベストアンサー1
main.py
スクリプトが正しく作成され、stdinから読み取られると仮定そしてvenv/bin/activate
stdin(*) で読んだ内容は??????
「何も」であってはなりません。
Pythonの前にstdinを使用するbashスクリプトには古いコマンドがないため、Pythonはそれを使い始めます。
#/bin/bash
pushd /some/python/virtual/environment/working/dir
source venv/bin/activate
python main.py
deactivate
または、main.py
実行可能ファイルを作成して直接実行してください./main.py
。どちらにしても、動作原理は同じです。
<<<
(*)すべてのstdinを変数としてキャプチャし、次に変数をfirstおよびにvenv/bin/activate
パイピングまたはリダイレクトするなどの醜いことがなければ、おそらくこれをまったく実行できませんmain.py
。
ここで何が起こっているのか、そしてどのように機能するのかについて非常に明確な例については、次のshスクリプトを検討してくださいkitten.sh
。
#!/bin/sh
cat
ただ実行されcat
、標準入力から読み始め、入力を標準出力に印刷します。