Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3015008
  • 博文数量: 167
  • 博客积分: 613
  • 博客等级: 中士
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-13 21:35
个人简介

人, 既无虎狼之爪牙,亦无狮象之力量,却能擒狼缚虎,驯狮猎象,无他,唯智慧耳。

文章分类
文章存档

2015年(19)

2014年(70)

2013年(54)

2012年(14)

2011年(10)

分类: LINUX

2014-04-17 09:54:24

     今天遇到一个实际的问题,需要向系统终端一次写入多个关键词,并且实现换行,于是自己去简单看了下Shell,现学现用吧,临时拼凑了一下,形成了下面的简单脚本:

点击(此处)折叠或打开

  1. #!/bin/bash
  2. #comment:

  3. echo "This is a shell to input multi-keywords into regexes..."


  4. if [ -f regexes ];then
  5.    rm -r regexes
  6. fi

  7. touch regexes

  8. echo "met" >> regexes
  9. echo "found" >> regexes
  10. for file in $*;do
  11.    echo $file >> regexes
  12. done
      懂Shell的童鞋一定发现代码不难,不过这是自己平生写的第一个Shell代码,作为一个入门,还是在这里简单说明一下吧!
     第一行#!用来说明本脚本使用什么Shell来解读,这里使用的是bash shell,其实还有cshell等其他shell,只不过bash shell开源免费,而且是Ubuntu的默认Shell;
     第二行开始#用来表示注释;
     第七行开始进行一个简单的文件判断,这里使用条件测试【】来实现,其中注意【与】与相邻的代码都必须有空格,否则会报错,【】内部是-f判断该变量是否为一个文件,当然也可以用来判断该文件是否存在,若存在,则删除;
     第十一行直接运行touch命令,可见在Shell脚本中可以直接使用Linux命令,很方便;有时候使用cat这样的命令,需要进行exit 0的退出,这里就不用了;
     第十三和十四行使用echo命令向文件写入内容;
     第十五行使用循环结构将参数全部按行追加到文件中,这里需要注意$#表示所有命令参数的个数(第一个$0为执行脚本的文件名,而$*表示所有的命令参数(不包含文件名),$1就表示第一个命令参数了,$2依次类推;for  x in S*; do---done
     下面是测试结果:

     
     
阅读(31334) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

windhawkgyang2014-05-14 16:02:54

laoshufeifei:我看你前几行想清空一个文件    可以用这个命令">somefile”。

嗯 如果该文件存在 则删除;可是直接换成清空,就是如果该文件本身不存在的话直接使用>somefile会不会有问题?

回复 | 举报

laoshufeifei2014-05-11 01:11:02

我看你前几行想清空一个文件    可以用这个命令">somefile”。