私は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
私はシェルスクリプトに初めて触れましたが、正直に言ってあなたの方法がわかりませんが、それが私がすることです。
#!/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