例如,我想发送`print(32)到python,它应该打印32并保持打开状态,直到我按下ctrl+d我做了跟踪
echo 'print(32)' | python
但它只是打印32并关闭python。我想让Python的交互式shell保持打开状态,以便从我的键盘发送进一步的命令。编辑:这只是一个例子。它可以是node、ruby或docker exec -it命令,而不是python。基本上,我想通过管道输出,就像我通过键盘输入一样
node
ruby
docker exec -it
eufgjt7s1#
使用-i标志要求python在运行脚本后进行交互式检查,合并bash中的进程替换<(..)构造。这将使python命令假定命令来自文件,即使它不是
-i
<(..)
python -i <(echo 'print(32)') 32 >>>
或将PYTHONINSPECT变量设置为非空字符串以模拟-i行为
PYTHONINSPECT=x python <(echo 'print(32)')
请注意,POSIX模式不支持进程替换,但仅在bash/zsh或ksh 93上支持。
syqv5f0l2#
如果您在xwindow中安装了xdotool,则可以使用以下命令模拟该行为:
#!/bin/bash feed_initial_input(){ local initial_input="$1"; shift { sleep 0.3; xdotool type "$initial_input"$'\n'; } & "$@" } feed_initial_input "print(32)" python feed_initial_input "console.log('Hello world!')" node
2条答案
按热度按时间eufgjt7s1#
使用
-i
标志要求python在运行脚本后进行交互式检查,合并bash中的进程替换<(..)
构造。这将使python命令假定命令来自文件,即使它不是或将PYTHONINSPECT变量设置为非空字符串以模拟
-i
行为请注意,POSIX模式不支持进程替换,但仅在bash/zsh或ksh 93上支持。
syqv5f0l2#
如果您在xwindow中安装了xdotool,则可以使用以下命令模拟该行为: