Pythonスクリプトの出力はインタラクティブモードの入力と同じです。

Pythonスクリプトの出力はインタラクティブモードの入力と同じです。

私はPythonファイルを持っていて、まるでインタラクティブモードで何かを入力したかのように出力を取得したいと思います(この質問のように)https://stackoverflow.com/q/59008423しかし、シェルスクリプトを使用して)

このシェルスクリプトを使用しようとしていますscript.sh

# script.sh
#!/bin/sh
printf "print(\"one\")\nprint(\"two\")\n" | tee /dev/fd/3 | python -i 1>/dev/fd/3 2>/dev/fd/3

そして走る

$ sh script.sh 3>&1

そして出力を得なさい

print("one")
print("two")
Python 3.11.6 (main, Nov 14 2023, 09:36:21) [GCC 13.2.1 20230801] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> one
>>> two
>>> 

私が期待していたものの代わりに

Python 3.11.6 (main, Nov 14 2023, 09:36:21) [GCC 13.2.1 20230801] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("one")
one
>>> print("two")
two
>>> 

問題は、pythonコマンドに標準入力バッファがあることです。

ベストアンサー1

おすすめ記事