bashに入れてからPythonに送信して、より多くの使用可能なテキストの断片があります。
だから私のコマンドラインは
cat input_file | sh bash_file.sh
私のshファイルは
#!/bin/sh
input_data=$(cat)
"$input_data" | python3 ./python_file.py
私のPythonファイルは
contents = sys.stdin.read()
print(contents)
しかし、実際にはコンテンツには何も保存されません。シェルスクリプトファイルに追加したものをPythonでどのように印刷できますか?
答え1
$input_data
デフォルトでは正確ですが、標準入力として印刷しません。代わりにというコマンドを実行してみてください $input_data
。
printf
次のように、シェルスクリプトの最後の行を変更して変数の内容を印刷するために使用されます。
printf "%s" "$input_data" | python3 ./python_file.py
答え2
シェルスクリプトの標準入力は、Pythonスクリプトの標準出力がシェルスクリプトのstdoutに渡される方法と同様に、スクリプトのpythonコマンドに渡されます。したがって、変数を使用する必要はありません。これで十分です。
#!/bin/sh
python python_file.py
cat file | sh script.sh
あなたはそれをあなたまたはより良いものと呼ぶことができます
sh script.sh < file
cat - | python script.py
読みやすさが必要な場合は、stdinにwhereを使用するか、-
この実行がstdinを待つというコメントを追加できます。