《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 ...
随机推荐
- [转载]$(document).ready(function(){});
转载自:http://www.cnblogs.com/king-sheng/archive/2012/01/06/2313980.html $(document).ready(function() 页 ...
- Vue中使用定时器setInterval和setTimeout
js中定时器有两种,一个是循环执行setInterval,另一个是定时执行setTimeout 一.循环执行(setInterval) 顾名思义,循环执行就是设置一个时间间隔,每过一段时间都会执行一次 ...
- Axure快捷键
基本快捷键: 打开:Ctrl + O 新建:Ctrl + N 保存:Ctrl + S 退出:Alt + F4 打印:Ctrl + P 查找:Ctrl + F 替换:Ctrl + H 复制:Ctrl + ...
- c# 获取网页源代码(支持cookie),最简单代码
/// /// 获取网页源码 public static string GetHtmls(string url, string referer = "", string cooki ...
- Java基础—类和对象
基本概念 对象:对象是类的一个实例,有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等. 类:类是具有相同属性和方法的一组对象的集合,它为属于该类的所有对象提 ...
- 分布式计算开源框架Hadoop入门实践(三)
Hadoop基本流程 一个图片太大了,只好分割成为两部分.根据流程图来说一下具体一个任务执行的情况. 在分布式环境中客户端创建任务并提交. InputFormat做Map前的预处理,主要负责以下工作: ...
- 解释*args和**kwargs的含义
当我们不知道向函数传递多少参数时,比如我们向传递一个列表或元组,我们就使用*args def func(*args): for i in args: print(i) func(3,2,1,4,7) ...
- document.documentElement和document.body区别以及获取浏览器的宽高
原文:http://www.jb51.net/article/41410.htm 1.区别: body是DOM对象里的body子节点,即 <body> 标签: documentElemen ...
- loadrunner脚本篇——Run-time Settings之ContentCheck
运用场景(很少用到): ContentCheck的设置可用来让VuGen检测存在错误的站点页面.如果被测的Web应用没有使用自定义的错误页面,那么这里不用添加规则,因为LR在回放时候,可以默认的捕捉到 ...
- iOS Xcode 8 快捷键 (注释 失效 处理)
在升级后,好用的VVDocumment 插件不能用了.(但是苹果这次内置了好多好用的插件,也有自己的注释功能了 AddDocumentation) 上网上有查到 传播很广泛的一条信息 "这个 ...