易截截图软件、单文件、免安装、纯绿色、仅160KB

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


相关文档:

实战Linux Bluetooth编程(三) HCI层编程

1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI)  就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......

Linux设备模型之input子系统详解

一:前言
最近在研究android的sensor driver,主要是E-compass,其中用到了Linux input子系统.在网上也看了很多这方面的资料,感觉还是这篇分析的比较细致透彻,因此转载一下以便自己学习,同时和大家分享!
(这篇博客主要是以键盘驱动为例的,不过讲解的是Linux Input Subsystem,可以仔细的研究一下!)
键盘驱动将检 ......

linux下常用的命令

1.磁盘命令
       mount        挂上文件系统
       umount       卸下已挂上的文件系统
       df          ......

Linux环境进程间通信(五)(上)


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成长之路 2010 01 06

      最近想在Linux主机上架设Oracle RAC,所以不断地收集相关资料,并进行实际研究.
      相信大家很快就可以在我的博客中看到相关的研究心得了.
      在Linux学习的这段时间,感觉它真是非常奇妙,让我对它的兴趣也越来越浓了,希望能够更好 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号