检查某个程序是否已安装的脚本

检查某个程序是否已安装的脚本

我如何创建一个 bash 脚本来检查某个程序是否已安装,如果尚未安装,则安装它?

感谢您的帮助。

这是我目前拥有的代码:

#/bin/bash

PS3="choose an option"

select opcion in "Installing_Youtube"  "exit"

do

    case $opcion in


        "Installing_Youtube")

            youtube-dl > /usr/bin
            if [ $? -eq 127 ] ; then
                echo "installing youtube"
                 apt-get update
                 apt-get install youtube-dl
                mkdir Videos
            else
                echo "Youtube already installed"
            fi

        ;;


        "exit")
            exit

答案1

你可以这样做:

dpkg -s <packagename> &> /dev/null

然后检查退出状态。仅当上述命令的退出状态等于0时,软件包才会安装

所以:

   #!/bin/bash

    echo "enter your package name"
    read name

    dpkg -s $name &> /dev/null  

    if [ $? -ne 0 ]

        then
            echo "not installed"  
            sudo apt-get update
            sudo apt-get install $name

        else
            echo    "installed"
    fi

答案2

这行命令将使用该程序进行检查,如果已安装则返回,which如果未安装则返回:01

which apache | grep -o apache > /dev/null &&  echo 0 || echo 1

当然,您会在脚本中以这种方式使用它:

which "$1" | grep -o "$1" > /dev/null &&  echo "Installed!" || echo "Not Installed!"

一种简单的用法是:

#!/usr/bin/env bash
set -e

function checker() { 
        which "$1" | grep -o "$1" > /dev/null &&  return 0 || return 1 
}

if checker "$1" == 0 ; then echo "Installed"; else echo "Not Installed!"; fi

请注意以下几点:

  1. 安装时你必须处理依赖问题
  2. 为了避免在安装过程中与脚本交互,请参阅这里举些例子。
  3. 您可以捕获该函数的返回值并使用它来决定是否安装。

答案3

这是我为此目的编写的一个函数,我将其用在脚本中。它会检查所需的包是否已安装,如果没有,则提示用户安装。它需要包名称作为参数。如果您不知道所需程序所属的包的名称,您可以查找它。有关该信息可用这里。

function getreq {
dpkg-query --show  "$1"
if [ "$?" = "0" ];
then
    echo "$1" found
else
    echo "$1" not found. Please approve installation.
    sudo apt-get install "$1"
    if [ "$?" = "0" ];
    then echo "$1" installed successfully.
    fi
fi
}

答案4

你为什么要首先检查它?除非你有充分的理由,否则不要这样做,就apt-get install package过去吧。如果它已经安装,如果有新版本可用,它将被更新,如果它已经安装并且是最新的,则什么也不会发生。如果您需要应用某些配置,还有其他选择,例如构建依赖于该包的配置包或使用配置管理软件(如 ansible)。

相关内容