Bash脚本-如何检查软件包是否已安装并根据终端结果执行操作

问题描述 投票:0回答:1

我目前正在一个项目中,我需要更新未连接到互联网的多个系统。我必须在每个系统上手动下载和安装/升级每个rpm软件包。

我正在尝试编写一个脚本,该脚本将检查是否安装了较旧版本的软件包以及是否要执行升级。否则,请移至下一个软件包(我仅升级软件包,而不安装新软件包。)

这是我目前拥有的。该脚本引用的文件包含所有软件包的列表。我没有每个软件包的软件包名称,但是我有rpm,所以我很好奇如何在if语句中进行适当的比较,以使脚本在true时执行其他操作。

IFS="="
while read -r name value
do
RESULTS="rpm -qi ${value//\"/}"

if [[ $($RESULTS == "package ${value//\"/} is not installed") ]] 
    then
    echo "Package ${value//\"/} is not installed, moving on..." >> patching_log.conf
else    
    if [[$(${value//\"/} == *"kernel"*)]]
        then
        do
        rpm -ivh ${value//\"/} >> patching_log.conf
        done < patches.conf
    else 
        do
        rpm -Uvh ${value//\"/} >> patching_log.conf
        done < patches.conf
    fi
fi

谢谢你!

linux bash redhat rpm
1个回答
0
投票

[如果有机会,请给我们展示您的输入示例。我查看了您的程序,并提供了以下重写:

© www.soinside.com 2019 - 2024. All rights reserved.