Bash 将基于Ubuntu版本的正确存储库添加到sources.list

Bash 将基于Ubuntu版本的正确存储库添加到sources.list,bash,shell,ubuntu,Bash,Shell,Ubuntu,我有一个脚本,可以安装新安装时所需的所有程序。其中一些需要外部存储库。例如,我想将正确的存储库添加到sources.list中,然后安装该程序。 到目前为止,我有: source /etc/os-release link="http://qgis.org/debian $UBUNTU_CODENAME main" a='echo "deb $link" >> /etc/apt/sources.list' b='echo "deb-src $link" >> /etc

我有一个脚本,可以安装新安装时所需的所有程序。其中一些需要外部存储库。例如,我想将正确的存储库添加到sources.list中,然后安装该程序。 到目前为止,我有:

source /etc/os-release

link="http://qgis.org/debian $UBUNTU_CODENAME main"

a='echo "deb $link" >> /etc/apt/sources.list'

b='echo "deb-src $link" >> /etc/apt/sources.list'

sudo sh -c $a
sudo sh -c $b

连接部分不起作用。如何解决这个问题?

< P>首先,考虑一个简单的方法:

source /etc/os-release
{
  sudo deb http://qgis.org/debian "$UBUNTO_CODENAME" main
  sudo deb-src http://qgis.org/debian "$UBUNTO_CODENAME" main
} >> /etc/apt/sources.list
如果您觉得需要重构,请定义一个shell函数:

get_package_list () {
    sudo "$1" http://qgis.org/debian "$UBUNTU_CODENAME" main
}

{ get_package_list deb
  get_package_list deb-src
} >> /etc/apt/sources.list

a
b
中的双引号是文字,而不是句法。看见尝试
set-x
以查看shell试图执行什么。