저는 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