《Advanced Bash-scripting Guide》学习(七):描述、列表和确定是否可以安装一个rpm包
本文所选的例子来自于《Advanced Bash-scripting Gudie》一书,译者 杨春敏 黄毅
Example 3-2.将一个代码块的结果保存到文件
#!/bin/bash
#rpm-check.sh
#这个脚本的目的是为了描述、列表和确定是否可以安装一个rpm包
#在一个文件中保存输出
#这个脚本使用一个代码块来展示
SUCCESS=0
E_NOARGS=65
if [ -z "$1" ]
then
echo "Usage: `basename $0` rpm-file"
exit $E_NOARGS
fi
{
echo
echo "Archive Description:"
rpm -qpi $1 #查询说明
echo
echo "Archive Listing:"
rpm -qpl $1 #查询列表
echo
rpm -i --test $1 #查询rpm包是否可以被安装
if [ "$?" -eq $SUCCESS ]
then
echo "$1 can be installed."
else
echo "$1 cannot be installed."
fi
echo
} > "$1.test" #把代码中的标准输出重定向到文件中
echo "Results of rpm test in file $1.test"
#查看rpm的man页来查看rpm的选项
exit 0
对于未安装包,要想获得其信息,必须在rpm包所在的目录下。如果光盘/dev/sr0挂载在/mnt/cdrom,那么必须进到/mnt/cdrom/Packages下查询其信息。
那么,问题来了。
1.怎么检查光盘有没有挂载?如果没有,怎么用脚本呢来挂载?
2.当前目录是否是/mnt/cdrom/Packages?如果不是,有没有必要进入这个目录?如果是,试想光盘的挂载点下有没有写权限?
3.所有输出的文件的保存位置?
一个改进的脚本
#!/bin/bash
#这个脚本是为了描述、列表和确定是否可以安装一个rpm包
#在一个文件中保存输出
SUCCESS=0
E_NOARGS=65
pwd=/mnt/cdrom/Packages/
#检查入参是否为空,为空以error退出
if [ -z "$1" ]
then
echo "Usage: `basename $0` rpm-file"
exit $E_NOARGS
fi
#检查光盘是否挂载,如果没挂载,进行挂载
(mount | grep "/dev/sr0") &> /dev/null
if [ "$?" -ne 0 ]
then
mount /dev/sr0 /mnt/cdrom &> /dev/null
fi
#检查目录是否为指定目录
if [ "$PWD" != "$pwd" ]
then
X=$pwd$1
else
X=$1
fi
#这是一个代码块,用来描述、列表和确定是否可以安装一个rpm包(测试安装过程,实际并不安装)
{
echo
echo "Archive Description:"
rpm -qpi $X #查询未安装包的说明
echo
echo "Archive Listing:"
rpm -qpl $X #查询未安装包的列表,即文件安装位置
echo
rpm -i --test $X #查询rpm包是否可以被安装
if [ "$?" -eq $SUCCESS ]
then
echo "$1 can be installed."
else
echo "$1 cannot be installed."
fi
echo
} &> /root/sh/$1.test
#把代码段中所有输出(包括标准输出和错误输出)都重定向到文件中
echo "Results of rpm test in file $1.test"
exit 0
脚本运行结果
《Advanced Bash-scripting Guide》学习(七):描述、列表和确定是否可以安装一个rpm包的更多相关文章
- advanced bash shell guide读书笔记
http://note.youdao.com/noteshare?id=fc23a679849b4627d131d3ef07c74a71
- [转帖]Linux学习笔记之rpm包管理功能全解
Linux学习笔记之rpm包管理功能全解 https://www.cnblogs.com/JetpropelledSnake/p/11177277.html rpm 的管理命令 之前学习过 yum 的 ...
- 【MySQL】MySQL无基础学习和入门之二:MySQL的安装
安装MySQL安装一般分为源码包编译安装.分发包.rpm包安装和yum安装,四种安装方式有一些区别,对应的适用场景也不一样. 源码包:源码包就是程序源代码包,其中包含程序代码文件,这些代码文件是文本型 ...
- Linux学习笔记之rpm包管理功能全解
0x00 软件包管理器 所有的软件都是由文件格式的程序代码(即源代码),经过编译成为一个可执行二进制文件:对于一个软件来说,其包含二进制程序.库文件.配置文件以及帮助文件.在应用中,每次要安装程序时通 ...
- Linux学习—rpm包管理
前言 在linux上,一个软件通常由二进制程序,库文件,配置文件和帮助文件组成.其中: 二进制程序一般都放在/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin和/ ...
- salesforce lightning零基础学习(七) 列表展示数据时两种自定义编辑页面
上一篇Lightning内容描述的是LDS,通过LDS可以很方便的实例化一个对象的数据信息.当我们通过列表展示数据需要编辑时,我们常使用两种方式去处理编辑页面:Pop Up Window弹出修改详情以 ...
- 学习ASP.NET Core Razor 编程系列七——修改列表页面
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- [转帖][Bash Shell] Shell学习笔记
[Bash Shell] Shell学习笔记 http://www.cnblogs.com/maybe2030/p/5022595.html 阅读目录 编译型语言 解释型语言 5.1 作为可执行程序 ...
- advanced dom scripting dynamic web design techniques Part One DOM SCRIPTING IN DETAIL CHAPTER 1 DO IT RIGHT WITH BEST PRACTICES
You’re excited; your client is excited. All is well. You’ve just launched the client’s latest websit ...
随机推荐
- js,jquery和dojo操作dom
最近想学习arcgis javascript api,拦路虎就是dojo,为了便于理解dojo,在学习dojo的同时参考原生js和jquery,下午学习了下dom操作,mark下! 一.获取元素 js ...
- 数据库之MySQL(三)
视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 临时表搜索 SELECT *FRO ...
- CSDN论坛停站维护公告
各位亲爱的用户: CSDN论坛将于2014年11月9日23点至11月10日8点进行积分系统的升级,升级期间会影响大家的正常訪问和操作.给大家带来不便,敬请广大用户谅解. ...
- android自定义控件(四)坐标系
1.局部坐标系(Local Coordinate) 所谓本地坐标系,就是坐标系以物体的中心为坐标原点,物体旋转.平移等操作都是围绕局部坐标系进行的.这时当物体模型进行旋转.平移等操作时, 局部坐标系也 ...
- Hard模式学编程
靖难: 我一直推崇一种学习编程的方法,就是learn programming the hard way,我把它翻译为Hard模式学编程 . 我觉得他有以下几个要领: 1. 一开始学习的时候,要尽量去化 ...
- 在运行myeclipse10注册机时,显示找不到com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel这个包
在win7下安装MyEclipse10.安装完成之后运行注册机,总是提示classnotfond显示找不到com.sun.java.swing.plaf.nimbus.NimbusLookAndFee ...
- LeetCode: Keyboard Row
代码长了些,但还是比较简单的 public class Solution { public String[] findWords(String[] words) { List<String> ...
- yii框架的中的一些使用介绍
Yii框架的使用整理 获取配置文件中的数据 Yii::$app->params[‘配置文件中对应的参数名称’] 获取文件表单提交的数据 Yii::$app->request->pos ...
- @MarkFan 口语练习录音 20140423 [风雨哈佛路.Homeless To Harvard口语录音]
世界在转动,你只是一粒尘埃 没有你,世界照样在转 现实不会按照你的意识去改变的 一些人的需求 一些人的意志要比你更强 严酷的生活会让人不知所措 所以他们久久地困在挫败中 我们生气地抱怨,而对整体的形势 ...
- 跨平台移动开发_PhoneGap 使用Accelerometer 加速器
使用Accelerometer 加速器效果图 示例代码 <!DOCTYPE html> <html> <head> <title> Cude Phone ...