apt-get 安装软件包后退出 bash 脚本

apt-get 安装软件包后退出 bash 脚本

我已阅读这个帖子但它似乎对我的问题不起作用。

我正在通过 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

相关内容