在bash中运行安装命令;";然后是“;“是”;没有任何人工干预

在bash中运行安装命令;";然后是“;“是”;没有任何人工干预,sh,pacman,Sh,Pacman,因此,在一个新的arch linux实例上,我希望能够从一开始就安装tzdata 要手动执行此操作,请执行以下操作:- [root@myarch ~]# pacman -S tzdata :: The following packages should be upgraded first : pacman :: Do you want to cancel the current operation :: and upgrade these packages now? [Y/n] n r

因此,在一个新的arch linux实例上,我希望能够从一开始就安装
tzdata

要手动执行此操作,请执行以下操作:-

[root@myarch ~]# pacman -S tzdata
:: The following packages should be upgraded first :
    pacman
:: Do you want to cancel the current operation
:: and upgrade these packages now? [Y/n] n

resolving dependencies...
looking for inter-conflicts...

Targets (1): tzdata-2012c-1

Total Download Size:    0.13 MB
Total Installed Size:   5.41 MB

Proceed with installation? [Y/n] Y
可以看出,我必须首先输入
n
,然后输入
Y

我如何在bash的一行中运行它,而不需要输入
n
Y

yes n | pacman -S tzdata
让我通过第一个提示。但是我被第二个提示卡住了(很明显)。

怎么办

echo -e 'n\nY' | pacman -S tzdata

如果要向这样的程序发送多个输入,一种方法是在子shell中使用多个echo命令:

(echo n; echo y) | pacman -S tzdata

旁注:如果有更新,Pacman真的应该首先更新。然后你可以像另一个答案所说的那样使用
--noconfirm

这是不可移植的。使用printfHow便携性更好吗?他使用的是Arch包管理器。我的评论更多的是针对那些可能错误地认为echo-e用于其他事情是正确的人
(echo n; echo y) | pacman -S tzdata