我有一个简单的shell脚本,用于更新Firefox。 它的内容是:
#!/bin/sh
sudo apt-get pruge firefox
sudo apt-get install firefox
就是这样。现在,当我在终端中运行文件时,按顺序使用,
cd Desktop/Batch\ Files
sudo chmod 775 Firefox.sh
sudo ./Firefox.sh
输出表明pruge
操作无法完成但文件的其余部分仍可运行。
以下是确切的输出:
sudo: unable to resolve host ubuntu: Connection timed out
E: Invalid operation pruge
sudo: unable to resolve host ubuntu: Connection timed out
Reading package lists... Done
Building dependency tree
Reading state information... Done
firefox is already the newest version (57.0.1+build2-0ubuntu0.16.04.1).
0 upgraded, 0 newly installed, 0 to remove and 261 not upgraded.
尽管很烦人,但我仍然可以逐行运行代码,并且操作purge
有效。
答案1
你的脚本中有一个拼写错误,应该是purge
和 而不是pruge
。除此之外,如果你使用 调用脚本,则不需要在脚本内使用 sudo sudo script.sh
。因此你的脚本应该是:
#!/bin/sh
apt-get purge firefox
apt-get install firefox
您想-y
在安装时放置标志,以便即使有多个软件包需要安装,也能自动安装。因此更改:
apt-get install firefox
进入:
apt-get install -y firefox
但是,如果您希望输出无提示,则可以使用-qq
选项(暗示-y
),在这种情况下,您还需要为 purge 提供-y
或-qq
选项,但这样两个命令都将无提示运行。完全无提示脚本的示例:
#!/bin/sh
apt-get purge -qq firefox &&
apt-get install -qq firefox
您肯定想知道我为什么将它们放入&&
脚本中:这会导致只有第一个命令成功时才会运行第二个命令。
但是,通常不需要清除 Firefox 来安装新版本。只需执行一次sudo apt-get update && sudo apt-get install --reinstall firefox
就足够了,因为配置文件和设置无论如何都不会被清除。
答案2
在您的代码中,您输入了“pruge”,它需要更改为“purge”。