gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:00 25 4
gpt4 key购买 nike

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

我正在尝试制作一个脚本来检查是否安装了旧版本的软件包以及是否要执行升级。否则,继续下一个包(我只是升级包,而不是安装新包。)

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

工作解决方案:

IFS="="
while read -r name value
do

if [[ $(rpm -qi ${name//\"/}) == "package ${name//\"/} is not installed" ]]
then
echo "Package ${name//\"/} is not installed, moving on..."
else
if [[ "${value//\"/}" == *"kernel"* ]]
then
rpm -ivh ${value//\"/}
else
rpm -Uvh ${value//\"/}
fi
fi

echo 'Done!'
done < patches.conf >> patching_log.conf

提前谢谢您!

输入:

RHSA-2019:3979(kernel-tools-debuginfo)=kernel-tools-debuginfo-3.10.0-1062.7.1.el7.x86_64.rpm
RHSA-2019:3979(kernel-tools-libs)=kernel-tools-libs-3.10.0-1062.7.1.el7.x86_64.rpm
RHSA-2019:3979(perf)=perf-3.10.0-1062.7.1.el7.x86_64.rpm
RHSA-2019:3979(perf-debuginfo)=perf-debuginfo-3.10.0-1062.7.1.el7.x86_64.rpm
RHSA-2019:3979(python-perf)=python-perf-3.10.0-1062.7.1.el7.x86_64.rpm
RHSA-2019:3979(python-perf-debuginfo)=python-perf-debuginfo-3.10.0-1062.7.1.el7.x86_64.rpm
RHSA-2019:4024(SDL-32)=SDL-1.2.15-15.el7_7.i686.rpm
RHSA-2019:4024(SDL-64)=SDL-1.2.15-15.el7_7.x86_64.rpm

最佳答案

当您有机会时,请向我们展示您的输入示例。
我查看了您的程序并提供了此重写:

IFS="="
while read -r patchName patchrpm
do
RPM=${patchrpm//\"/}
if
! rpm -qi $RPM
then
echo "Package $RPM is not installed, moving on to next package."
else
rpm -Uvh $RPM
fi
done < patches.conf >> patching_log.conf

下面是同一个程序,其中包含行号,以防您需要询问具体问题:

 1  IFS="="
2 while read -r patchName patchrpm
3 do
4 RPM=${patchnum//\"/}
5 if
6 ! rpm -qi $RPM
7 then
8 echo "Package $RPM is not installed, moving on to next package."
9 else
10 rpm -Uvh $RPM
11 fi
12 done < patches.conf >> patching_log.conf

关于linux - Bash 脚本 - 如何检查软件包是否已安装并根据终端结果执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60046177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com