作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个 BASH 脚本来修补我的 CentOS 服务器。我的目标是,当我运行脚本时,它会输出包名、当前安装的版本和新的包版本。像这样的东西:
nspr.x86_64 / 4.8.8-3.el6 / 4.8.9-3.el6_2
yum check-update
命令给了我上面列出的第一条信息(包名)和第三条信息(新版本),我可以使用
awk
将两者分开。之后很容易;运行
rpm -q {package}
获取第二条信息,然后将它们连接起来。
for
的麻烦。在我的代码中循环。我需要将多个参数传递到循环中(包名和更新版本),这样我就可以
echo
他们以后。
for package in `/usr/bin/yum --cacheonly --noplugins check-update | awk '{print $1, $2}'`;
do
OLD_VER=`rpm -q ${package}` # ${package} should actually be $1 from the awk statement above
NEW_VER=${2} # This is $2 from the awk statement above
echo "${package} / ${OLD_VER} / ${NEW_VER}"
done
package
作为数组传递?有一个更好的方法吗?
最佳答案
你想阅读整行:
/usr/bin/yum --cacheonly --noplugins check-update |
while read line; do
set - $line;
echo first: $1 second: $2
done
关于Bash 脚本 - For 循环多个参数和 awk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9565728/
我是一名优秀的程序员,十分优秀!