创建 bash 脚本来安装软件包

创建 bash 脚本来安装软件包

说到 bash,我是个新手。我正在尝试创建一个脚本来检查软件包是否已安装。如果没有,它将安装该软件包。不确定我在做什么。

#! /bin/bash
echo Installing/Checking packages from list

declare -a PKGS=("libreoffice", "firefox", "virtualbox", "vlc")
    
PKG_OK=$(dpkg-i -W --showformat='${Status}\n' PKGS |grep "install ok installed")


for i in "${PKGS[@]}"
do
    if [ "" = "$PKG_OK" ]; then
        echo "No $PKGS, installing the package now"
        sudo apt install $PKGS[@]
    fi
done

答案1

简单地:

#!/bin/bash

pkgs=(libreoffice firefox virtualbox vlc)
sudo apt-get -y --ignore-missing install "${pkgs[@]}" 
  • 已经安装的软件包将被自动忽略
  • 那些不可访问的也将被忽略--ignore-missing
  • 比编写脚本apt-get更喜欢apt

man apt

apt 为包管理系统提供了一个高级命令行界面。它旨在作为最终用户界面,并且与 apt-get(8) 等更专业的 APT 工具相比,默认情况下启用一些更适合交互式使用的选项


我个人使用的另一种方法是将所有需要的包添加到文件中逐行

packages.list

moreutils
util-linux
strace

然后我可以打电话:

apt-get -y --ignore-missing install $(< packages.list)

答案2

我也是 shell 脚本的菜鸟,老实说,我不知道你的方法,但这就是我会做的。

#!/usr/bin/env bash

declare -a PKGS=(libreoffice firefox virtualbox vlc)
for i in "${PKGS[@]}"; do
    check=$(command -v "$i")
    if [[ $? -ne 0 ]]; then
        sudo apt install "$i"
    fi
done

相关内容