我已阅读这个帖子但它似乎对我的问题不起作用。
我正在通过 wget 的 stdin 执行 bash 脚本:
wget -O - http://serverip/subfolder/script | sudo bash
我尝试过使用apt-get -y --force-yes install <packages..> || true
,但是如果列出的其中一个是通过 apt-get 安装的,它仍然会退出脚本。
如果所有列出的包都已安装,它不会退出脚本。
apt-get upgrade
如果我有一个并且它安装了包,也会发生同样的事情。它将退出脚本。
我有另一组脚本,似乎可以正常工作。在这种情况下,安装脚本只是一个存根,它会下载、运行脚本,然后bash <scriptname>
删除脚本。脚本本身将通过 sudo 提升其权限。 apt-get
在这里按预期工作。
任何关于如何防止apt-get
终止脚本的见解都将受到赞赏。
答案1
我希望人们不要再这样做了:wget | bash
。这很愚蠢,而且会产生意想不到的效果,就像这里的情况一样。您有 bash,因此请利用其功能。特别是进程替换:
bash <(wget -O - http://serverip/subfolder/script)
答案2
您可能只需要停止贪婪地读取标准输入。通过将 stdin 重定向到(一个向 reads 返回 eof 的文件)apt-get
来实现。例如:/dev/null
apt-get -y --force-yes install ... </dev/null