linux脚本编程技术

一、什么是脚本

  脚本是一个包含一系列命令序列的可执行(777)文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到自动执行。

二、脚本编程

  #!/bin/sh 首行固定格式

  #!表明该脚本的的解析器,这里使用/bin/sh来解析

2.1变量

  shell脚本允许用户设置和使用自己的变量,变量可以是数字或者字符串,用户无需指定其类型,也无需在使用前定义。

  #!/bin/sh
  a="hello world"

  b=5
  echo “A is: $a”  //使用变量时要用$符号

  echo “B is $b”

2.2参数

  同C程序一样,shell本中也可以使用命令行参数

  1. $#:传入脚本的命令行参数个数
  2. $*:所有命令行参数值,在各个参数值之间留有空格
  3. $0:命令本身(shell文件名)
  4. $1:第一个命令行参数
  5. $2:第二个命令行参数

2.3数学计算

  shell脚本提供了一个专门的命令expr来计算数学表达式,例如expr 5 +1,但是当要把计算的结果赋值给其他变量的时候,还必须使用反号(键盘上~按键就是反引号)。

  var=`expr 20 / 10`

2.4if语句

  shell脚本中最基本的流程控制语句就是if-then,使用格式:

  if [ condition ] (特别提醒:方括号左右两边必须有空格)

  then
    commands
  else
    commands
  fi

2.4.1for语句

  shell脚本提供了for命令,用于创建类似于c语言编程中for语句一样的循环。使用格式:

  for var in list
  do
  commands
  done

2.4.2while语句

  shell脚本提供了while命令,用于创建类似于c语言编程中while语句一样的循环。使用格式:

  while [ condition ]
  do
  commands
  done

2.5条件比较

  比较操作     整数操作   字符串操作
  相同       -eq       =
  不同       -ne       !=
  大于       -gt       >
  小于       -lt        <
  大于或等于     -ge
  小于或等于     -le
  为空       -z
  不为空       -n

例:

  1. 比较整数a和b是否相等:if [ $a = $b ] (也可用eq)
  2. 判断整数a是否大于整数b:if [ $a -gt $b]
  3. 比较字符串a和b是否相等:if [ $a = $b]
  4. 判断字符串a是否为空: if [ -z $a]
  5. 判断整数变量a是否大于b:if [ $a -gt $b]

注意:
  1. 在“[”和“]”符号的左右都留有空格
  2. “=”左右都有空格

  -e 文件已经存在
  -f 文件是普通文件
  -s 文件大小不为零
  -d 文件是一个目录
  -r 文件对当前用户可以读取
  -w 文件对当前用户可以写入
  -x 文件对当前用户可以执行
  

2.6sed编辑器

  Sed(Stream Editor) : 流式编辑器又名行编辑器,每次只编辑一行,使用格式如下:

  sed [操作选项] ‘命令’ 文件名
常用操作选项:
  -n∶指定处理后只显示该行
  -n∶指定处理后只显示该行
  -e∶进行多项编辑任务
  -i∶直接修改读取的文件内容,而不是由屏幕输出

常用命令选项:

  p 打印匹配行
  a 新增
  c 替代一行
  d 删除定位行
  s 替代一行中的某些部分

2.6.1sed-范例

1. 显示
  •sed -n '2p' tmp.txt 只显示第2行
  •sed -n '1,3p' temp.txt 打印第1行到第3行
  •sed -n '/mov/'p temp.txt 打印含movie的行
2. 删除
  •sed ‘2d’ tmp.txt 删除第2行
  •sed ‘3,$d’ tmp.txt 删除第3行到最后一行,$:最后一行
3. 查询
  sed -n ‘/hello/p’ tmp.txt 查询包括关键字hello的所有行

4. 代替
  •sed ‘1c Hi’ tmp.txt 第1行代替为Hi
  •sed -n '/hello/p' tmp.txt | sed 's/hello/bird/g'
5. 插入
  •sed -i ‘$a bye’ tmp.txt 在最后一行插入bye

2.6.2awk分析器

  awk是一个强大的文本分析工具,它把文件逐行的读入,以空格为默认分隔符将每行分割为多个字段。

使用方式:
  awk ‘{pattern + action}' filenames
  pattern 要查找的内容
  pattern 要查找的内容
  action 找到匹配内容时所执行的命令
范例:
  

最新文章

  1. 谈谈对Spring IOC的理解(转)
  2. How.To.Process.Image.Infomation.Of.Rotate.And.Flip.From.Server
  3. 【8.0、9.0c】树形列表 列标题 不对齐的问题及解决方案
  4. iOS 应用程序的生命周期(转CocoaChina)
  5. SAP初级书籍(PM相关)
  6. python实现二叉树遍历算法
  7. 第十七章,txt文件的写入和读取数据结合练习(C++)
  8. nginx server_参数配置总结(转)
  9. Linux命令之查找
  10. 面试题之String str = new String(&quot;abc&quot;); 创建了几个对象
  11. Turn the corner
  12. 【java】正则表达式简单示例
  13. HDFS的WEB页面访问常见问题
  14. Centos7上安装、破解bamboo6.0.3
  15. java中的http请求的封装(GET、POST、form表单形式)
  16. 算法相关——Java排序算法之插入排序(四)
  17. 清华镜像方法更新python包
  18. Android Camera开发:给摄像头预览界面加个ZoomBar(附完整代码下载)
  19. 【玩转Golang】 通过组合嵌入实现代码复用
  20. Python Django 之 MVT

热门文章

  1. 【架构】RPC 使用 Haproxy、keepalive作为负载均衡
  2. Maven学习总结
  3. 小波变换C++实现(一)----单层小波变换
  4. Qt 信号槽如何传递参数(或带参数的信号槽)
  5. memcpy vs memmove
  6. Unity3D研究院之Prefab里面的Prefab关联问题(转)
  7. WPF ListView 排序
  8. ZipArchive和SSZipArchive使用详解
  9. vs2013显示行号
  10. 【leetcode】 search Insert Position(middle)