私は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
コマンドに標準入力バッファがあることです。