shell脚本有条件地添加apt存储库

Ita*_*tay 10 apt scripts repository

我想编写一个 shell 脚本来添加一个 apt 存储库。
我知道我可以使用sudo add-apt-repository -y <repo>.

我的问题是,只有在尚未添加存储库的情况下,我才能这样做,例如:

if repo was not added yet:
  sudo add-apt-repository -y <repo>
  sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

谢谢

Ita*_*tay 5

我最终编写了一个函数来处理 ppa 存储库。

add_ppa() {
  grep -h "^deb.*$1" /etc/apt/sources.list.d/* > /dev/null 2>&1
  if [ $? -ne 0 ]
  then
    echo "Adding ppa:$1"
    sudo add-apt-repository -y ppa:$1
    return 0
  fi

  echo "ppa:$1 already exists"
  return 1
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一些更优雅的方式。


Ugo*_*Hed 5

我更改了 Itay 的函数,以便它处理多个参数:

add_ppa() {
  for i in "$@"; do
    grep -h "^deb.*$i" /etc/apt/sources.list.d/* > /dev/null 2>&1
    if [ $? -ne 0 ]
    then
      echo "Adding ppa:$i"
      sudo add-apt-repository -y ppa:$i
    else
      echo "ppa:$i already exists"
    fi
  done
}
Run Code Online (Sandbox Code Playgroud)

被这样称呼:

add_ppa webupd8team/atom xorg-edgers/ppa ubuntu-wine/ppa
Run Code Online (Sandbox Code Playgroud)

  • 如果您想改进另一个答案,请建议对其进行编辑,不要创建新答案。 (4认同)