linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > SHELL >
栏目导栏
资料搜索
热门文章
·csh shell编程入门
·玩转Linux shell命令提示符
·Bourne Shell及shell编程
·Shell 编程实例集锦
·Linux下的shell编程入门
·Shell编程基础
·linux shell 编程基础
·shell基础十二篇
·Linux的Shell编程
·linux Shell编程入门 实例讲解
·Linux主要shell命令详解
·Linux shell 脚本实例一
·深入浅出Shell编程: Shell 变量
·shell命令(一)
·UNIX/LINUX SHELL 正则表达式语
最新文章
·Linux系统中加入自定义Shell为
·Shell学习:关于替换命令-tr-R
·Linux Shell学习:uniq命令使用
·uClinux操作系统下的shell功能
·Shell编程基础:单引号和双引号
·Linux操作系统下Shell语句元字
·Linux系统环境程序设计之路
·Linux Shell中PS命令中的%CPU的
·Linux Shell元字符知识笔记
·压缩命令-vi-认识SHELL-正规表
·Linux系统下Shell命令行快捷键
·谈Linux Shell下的输出重定向
·在Shell中执行vi/cp/mv时自动备
·shell数组介绍
·开启和关闭Shell特性的小技巧
Google
 
unix下几个有用的小shell脚本
[ 作者:Linux联盟收集  加入时间:2006-09-10 22:39:54  来自:Linux联盟收集 ]
换字符串的脚本trans_par.pl,它可以把unix下文本文件里出现的字符进行替换,生成新的.new文件。sFELinux联盟
----------------------------------------------------------------------------------------------sFELinux联盟
#!/usr/bin/perlsFELinux联盟
# parameter_0 is filenamesFELinux联盟
# parameter_1 is source char will be replaced sFELinux联盟
# parameter_2 is target charsFELinux联盟
sFELinux联盟
$filename=$ARGV[0];sFELinux联盟
$filecontent='';sFELinux联盟
sFELinux联盟
undef $/;sFELinux联盟
sFELinux联盟
open(FH,$filename);sFELinux联盟
$filecontent = ;sFELinux联盟
close FH;sFELinux联盟
sFELinux联盟
$filecontent =~ s/$ARGV[1]/$ARGV[2]/g;sFELinux联盟
sFELinux联盟
open(FH,">${filename}.new");sFELinux联盟
print FH $filecontent;sFELinux联盟
close FH; sFELinux联盟
----------------------------------------------------------------------------------------------sFELinux联盟
sFELinux联盟
调用方式举例:sFELinux联盟
sFELinux联盟
$cat a.txtsFELinux联盟
sFELinux联盟
1234 1234sFELinux联盟
1234 * 4321sFELinux联盟
sFELinux联盟
$./trans_par.pl a.txt '12' '78' sFELinux联盟
sFELinux联盟
$cat a.txt.newsFELinux联盟
sFELinux联盟
7834 7834sFELinux联盟
7834 * 4321 sFELinux联盟
sFELinux联盟
        文件名取子串的方法:sFELinux联盟
sFELinux联盟
                after_file_name=`echo $file_name|awk '{print substr($file_name,1,12)}'`sFELinux联盟
sFELinux联盟
                pre_file_name=`echo $file_name|awk '{print substr($file_name,1,2)}'`sFELinux联盟
        sFELinux联盟
        Unix格式文件转换成Dos格式文件:sFELinux联盟
        sFELinux联盟
                unix2dos -q -k filenamesFELinux联盟
        sFELinux联盟
        Dos格式文件转换成Unix格式文件:sFELinux联盟
        sFELinux联盟
                dos2unix -q -k filenamesFELinux联盟
sFELinux联盟
        根据定时生成的文本文件字节数是否一样来判断程序是否运行正常,如果一段时间内数据没有变化,发邮件通知.sFELinux联盟
----------------------------------------------------------------------------------------------sFELinux联盟
cd /beijingsFELinux联盟
sFELinux联盟
dt2=`date --date '10 minutes ago' "+%Y%m%d%H%M00"`;export dt2sFELinux联盟
filename2=english_company_name_$dt2.txt;export filename2sFELinux联盟
ls -l $filename2>filename2.txtsFELinux联盟
cat /beijing/filename2.txt|awk '{print $5}'>size2.txtsFELinux联盟
sFELinux联盟
dt1=`date --date '5 minutes ago' "+%Y%m%d%H%M00"`;export dt1sFELinux联盟
filename1=english_company_name_$dt1.txt;export filename1sFELinux联盟
ls -l $filename1>filename1.txtsFELinux联盟
cat /beijing/filename1.txt|awk '{print $5}'>size1.txtsFELinux联盟
sFELinux联盟
dt0=`date "+%Y%m%d%H%M00"`;export dt0sFELinux联盟
filename0=english_company_name_$dt0.txt;export filename0sFELinux联盟
ls -l $filename0>filename0.txtsFELinux联盟
cat /beijing/filename0.txt|awk '{print $5}'>size0.txtsFELinux联盟
sFELinux联盟
echo 'file is ok'sFELinux联盟
sFELinux联盟
filename2_size=`cat /beijing/size2.txt`;export filename2_sizesFELinux联盟
filename1_size=`cat /beijing/size1.txt`;export filename1_sizesFELinux联盟
filename0_size=`cat /beijing/size0.txt`;export filename0_sizesFELinux联盟
sFELinux联盟
echo $filename2_sizesFELinux联盟
echo $filename1_sizesFELinux联盟
echo $filename0_sizesFELinux联盟
sFELinux联盟
if [ -z $filename2_size ] || [ -z $filename1_size ] || [ -z $filename0_size ]; thensFELinux联盟
        echo 'no such files'sFELinux联盟
elsesFELinux联盟
      if [ $filename2_size -eq $filename1_size ] && [ $filename1_size -eq $filename0_size ]; thensFELinux联盟
      echo 'something is wrong,please look at'sFELinux联盟
      cat /beijing/bin/error.txt /beijing/filename* >/beijing/error_mail.txtsFELinux联盟
      mail -s 'alert mail' maggiefengyu@mail.china.com </beijing/error_mail.txt > /dev/null 2>&1sFELinux联盟
      elsesFELinux联盟
      echo 'everything is ok'sFELinux联盟
      fi sFELinux联盟
fisFELinux联盟
----------------------------------------------------------------------------------------------sFELinux联盟
说明:/beijing/bin/error.txt 文件为邮件正文部分 sFELinux联盟
sFELinux联盟
unix shell 里面比较字符写法:  (我经常不记得,用的时候需要找文档, 现在把它们列出来)sFELinux联盟
sFELinux联盟
    -eq 等于 -z 空串 sFELinux联盟
    -ne 不等于 = 两个字符相等 sFELinux联盟
    -gt 大于 != 两个字符不等sFELinux联盟
    -lt 小于 -n 非空串sFELinux联盟
    -le 小于等于 sFELinux联盟
    -ge 大于等于sFELinux联盟
    sFELinux联盟
命令的执行顺序符号:    sFELinux联盟
    sFELinux联盟
命令1 && 命令2sFELinux联盟
sFELinux联盟
      &&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令(命令2)才能够被执行;sFELinux联盟
      换句话说,“如果这个命令执行成功&&那么执行这个命令”。sFELinux联盟
      sFELinux联盟
命令1 || 命令2sFELinux联盟
sFELinux联盟
      如果||左边的命令(命令1)未执行成功,那么就执行||右边的命令(命令2);sFELinux联盟
      或者换句话说,“如果这个命令执行失败了|| 那么就执行这个命令”sFELinux联盟
      sFELinux联盟
文件状态测试符号:sFELinux联盟
sFELinux联盟
    -d     目录        -s     文件长度大于0、非空sFELinux联盟
    -f     正规文件     -w     可写sFELinux联盟
    -L     符号连接     -u     文件有suid位设置sFELinux联盟
    -r     可读        -x     可执行             sFELinux联盟
    sFELinux联盟
测试文件状态是否为OK,但是有时要比较两个文件状态。shell提供三种逻辑操作完成此功能:sFELinux联盟
sFELinux联盟
  -a   逻辑与,操作符两边均为真,结果为真,否则为假。sFELinux联盟
  -o   逻辑或,操作符两边一边为真,结果为真,否则为假。sFELinux联盟
   !   逻辑否,条件为假,结果为真。 Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息