有没有办法可以无人值守运行 bash 脚本?

有没有办法可以无人值守运行 bash 脚本?

我对 Linux 世界还很陌生,现在我已经完全转用了 Windows 10。我尝试了一下,但由于它被大肆宣传,效果不如我预期。无论如何,我会衡量我目前对 Linux 的了解,我会说我已经超越了 KUbuntu,成为了“菜鸟”和“初学者”。我不确定这是否可以做到,所以我希望有人能告诉我这是否可行。

我已经学会了apt-get install -y Foo安装我想要安装的任何东西的技巧,而无需终端要求我点击YN

所以我的问题是这样。我发现了适用于各种 Ubuntu 版本以及许多适用于其他发行版(如 Elementary、Manjaro、SuSe 等)的“安装后”脚本。制作这些脚本是为了让其他人可以安装许多软件、调整、主题等。

是否可以告诉我的新 Kubuntu 15.04 系统在提示接受新功能时始终按 Y 键?有没有办法用 bash 脚本做到这一点?或者我必须像鹰一样监视它,这样如果我迟到了电脑来按 Y 键,它就不会一直中止?

答案1

是的,有。有一个yes命令的作用正是如此。它将重复输出给定的字符串(y默认)。因此,如果脚本foo.sh希望您点击y以确认操作,您可以这样运行它:

yes | foo.sh

然而,这真的不是一个好主意。首先,在大多数情况下,没有超时。你不需要冲到电脑前,它会等你。电脑往往是相当有耐心的野兽。更重要的是,你很少想盲目地接受别人告诉你的任何事情。自己做决定是个好主意,这就是你被问到的原因。

无论如何,选择权都在您手中。如果您确定要盲目地对所有问题回答“是”,则只需使用yes

答案2

您可以创建脚本的副本并运行,这将用自动回答的版本sed -i 's|apt-get install|apt-get -y --force-yes install|g' /path/to/script替换每次出现的。不过,要小心 。apt-get install--force-yes

而且这可能并不能真正解决您的问题,因为在大多数脚本中,Y/N 问题不是由 apt“询问”,而是由脚本本身“询问”,通常使用命令read

您可以尝试运行/path/to/script -h/path/to/script --help查看是否有自动接受开关。

另一种方法是通过管道传递“Y”,即for i in {1..10}; do echo Y; done |/path/to/script,但这是一种相当不干净的方法。

答案3

  • 据我所知,Y总是不好,更具体地说是apt-get dist-upgrade。实际上,在开始下载之前,对第一个问题回答 Y 很容易。

  • 其他主要来自安装后脚本,请尝试以下操作:

    sudo DEBIAN_FRONTEND=noninteractive apt-get -y install Foo
    

    来源: 我如何要求 apt-get 跳过任何交互式安装后配置步骤?

相关内容