You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用Shell脚本执行apt卸载时跳过y/n确认无响应如何解决

故障原因

你在Python侧写入yes\n的标准输入仅传递给了顶层的Shell脚本进程,而Shell脚本内部的3条apt命令是各自独立的子进程,无法接收到外层Shell的输入内容,因此apt卡在交互确认环节无法继续执行,最终表现为无执行效果。

解决方案

方案1:添加apt自动确认参数(推荐)

apt命令原生支持-y参数,可自动应答所有交互确认项,无需额外手动传值。修改后的Shell脚本如下:

echo *MY PASSWORD* | sudo -S apt-get --purge remove -y *PROGRAM*
echo *MY PASSWORD* | sudo -S apt-get autoremove -y
echo *MY PASSWORD* | sudo -S apt-get clean

对应可简化Python代码,删除不必要的stdin写入逻辑:

import subprocess

self.shellscript = subprocess.Popen([self.shellScriptPath], shell=True)
self.returncode = self.shellscript.wait()

方案2:Shell内部传递确认输入

如果不修改apt命令参数,也可以在Shell脚本内通过yes命令直接给对应apt进程传递确认值:

echo *MY PASSWORD* | sudo -S yes | apt-get --purge remove *PROGRAM*
echo *MY PASSWORD* | sudo -S yes | apt-get autoremove
echo *MY PASSWORD* | sudo -S apt-get clean

内容的提问来源于stack exchange,提问作者Teer 2008

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:24:02