如何检查PPA是否已添加到bash脚本中的apt来源列表中


11

有没有人知道如何检查PPA之前是否已将PPA添加到我的系统add-apt-repositoryshell script

那会很有帮助。

谢谢。

Answers:


11

您可以执行以下操作:

the_ppa=...  # e.g. the_ppa="ondrej/apache2"

if ! grep -q "^deb .*$the_ppa" /etc/apt/sources.list /etc/apt/sources.list.d/*; then
    # commands to add the ppa ...
fi

笔记:

  • grep 找到匹配项成功退出
  • 取反!,因此如果没有匹配项= ppa未添加,则将执行命令
  • -q标志使grep 安静,因此它不打印匹配的行。这只是噪音,我们只需要知道是否存在匹配项,对于该匹配项,退出代码是完美的
  • ^deb .*前缀是确保匹配的行开头deb,以排除被注释掉线

事实证明,这将找到已被注释掉的ppas,但是我想找到尚未被注释掉的PPA,@ Ten-Coins answer会这样做。
Taytay

2

打开您的终端并输入此命令

grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep fogger

用PPA名称替换fogger。

在此处输入图片说明


1
很高兴看到frogger仍然活着,我猜grep对于shell脚本中的if语句不是正确的解决方案
Josh

您也可以使用awk搜索字段。更快。
rɑːdʒɑ

我对awk并不熟悉,但是如果您有解决方案,请不要犹豫,发表您的评论并进行重复。附言 我非常喜欢一个衬板
Josh

由于我正在休假,因此无法正确测试而无法发布。那是什么选票?
rɑːdʒɑ

当天晚些时候,我将使用if语句进行测试。对不起,不好意思。我深夜不愿读这些文章。我认为这应该可以工作,并且如果我已经测试了命令,以后会做出响应。
乔什

0

删除list.save文件,源文件,确保仅使用deb行并将其计为“烟雾” ppa:

ppa_added=`grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v list.save | grep -v deb-src | grep deb | grep fogger | wc -l`

echo $ppa_added

这还会找到deb以开头的注释# deb行,以及类似foo-ppa.list.distUpgrade-这样的文件中的行?
Volker Siegel 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.