Linux Shell编程step by step 文本文件最后两行相减
作者:fbysss
msn:jameslastchina@hotmail.com
blog:blog.csdn.net/fbysss
声明:本文由fbysss整理编写,转载请注明出处
关键字:shell编程
背景
同事求助。
需求
一个文本文件,要得到最后一行与倒数第一行相减的结果。
测试文本
#vi test.txt
内容如下:
10
7
9
1
6
脚本
$vi rowSubstract.sh
内容如下:
#脚本注解,用于指明脚本类型是bash。这样,能保证不在bash的脚本环境,执行也没有问题。
#查看当前脚本环境:echo $SHELL。或者简单使用ps命令也可以。
#在linux下, #!/bin/sh和 #!/bin/bash几乎是一样的。
#!/bin/sh
#参数个数检查
#其中,$0为命令本身,$1-$n为参数,$#为参数个数
#if 和 fi成对进行判断
#if后面、[右边和]左边都必须有空格,then 前面需要有分号;
#如果不满足条件,返回一个状态码(必须在0-255之间),一般正确的返回0,错误的返回其他数字
#判断数字,必须使用eq ne gt lt等逻辑运算符,如果是字符串,则要使用=或者== ,!= ,>= ,<=来判断
if [ $# ne 1 ] ; then
echo 'useage:$0 [filename]'
exit 1
fi
#参数有效性检查,注意感叹号!前后都要有空格,表示逻辑取反。-f 表示是否存在这个文件 -d判断目录。
if [ ! -f $1 ] ;then
echo 'file ' $1 'not found,please check the filename.'
exit 2;
fi
#得到文本行数,其中$1为脚本的第一个参数。依次类推,$n为第n个参数 ;wc -l用来统计行数
#``中间的内容,相当于去执行里面的命令,得出一个结果
rowcount=`cat $1|wc -l`
lastrowvalue=`tail -1 $1`#得到最后一行的内容
seclastrownum=`expr $rowcount - 1`#得到倒数第二行的行号,其中,expr 为表达式运算,运算符左右都要有空格,变量等号和赋值之间不要有空格
seclastrowvalue=`sed -n $seclastrownum'p' $1`#得到倒数第二行的内容。其中,$num'p' 的形式是为了连接变量和p命令
echo `expr $lastrowvalue - $seclastrowvalue#最后一行减去倒数第二行数值的运算结果
$chmod 755 rowSubstract.sh
$./rowSubstract.sh test.txt
结果为
5
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......
1.磁盘命令
mount 挂上文件系统
umount 卸下已挂上的文件系统
df   ......
Linux环境进程间通信(五):
共享内存(上)
文档选项
<tr
valign="top"><td width="8"><img alt="" height="1" width="8"
src="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" wid ......
最近想在Linux主机上架设Oracle RAC,所以不断地收集相关资料,并进行实际研究.
相信大家很快就可以在我的博客中看到相关的研究心得了.
在Linux学习的这段时间,感觉它真是非常奇妙,让我对它的兴趣也越来越浓了,希望能够更好 ......