当编写脚本时,可能会遇到需要的命令在系统中没有安装,
此时需要解决命令依赖的问题,解决方法为安装对应的软件。Linux下大量的发行版,且不同发行版一般使用不同的包管理器,这导致了安装软件需要执行不同的安装命令,于是需要解决第二个问题:使用通用Linux
命令探测系统安装的包管理器,然后确定安装命令。但是有时候,软件包提供的命令与其包的名称并不一致,这里就需要建立一个命令与包的映射关系,以正确执行安装命令。按照这个思路,本文提供一个基础的脚本:
通用安装脚本1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #! /bin/sh
declare -A RD_PKG=(\ ["pacman"]="pacman -S --needed --confirm" ["apt-get"]="apt-get -y install" ["yum"]="yum -y install" ["dnf"]="dnf -y install" ["zypper"]="zypper -y install" )
declare -A RD_CMD=(\ ["unar"]="unarchiver" ["ssh"]="openssh" ["nvim"]="neovim" )
for sh_pkg in ${!RD_PKG[*]}; do which $sh_pkg &> /dev/null if [ $? = 0 ]; then RD_PKG_INS=${RD_PKG[$sh_pkg]} fi done
for sh_cmd in ${!RD_CMD[*]}; do which ${sh_cmd} &> /dev/null if [ ! $? = 0 ]; then sudo ${RD_PKG_INS} ${RD_CMD[$sh_cmd]} fi done
|