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 找到匹配内容时所执行的命令
范例:
  

linux脚本编程技术的更多相关文章

  1. linux脚本编程技术---8

    一.什么是脚本 脚本是一个包含一系列命令序列的可执行(777)文本文件.当运行这个脚本文件时,文件中包含的命令序列将得到自动执行. 二.脚本编程 #!/bin/sh 首行固定格式 #!表明该脚本的的解 ...

  2. javascript学习 真正理解DOM脚本编程技术背后的思路和原则

    本文学习来源于<javascriptDOM编程艺术>仅作笔记 学会怎样才能利用DOM脚本编程技术以一种既方便自己更体贴用户的方式去充实和完善你们的网页. 循序渐进:从最核心的内容开始,逐步 ...

  3. linux脚本编程(shell)浅介 (转载)

    linux脚本(shell)编程 啊,昨天上网看到一篇讲 linux/unix shell 的文章,想想自己最后写这东西也是一年前的事了,想想都快忘光了. 还是整理一下,做一次回顾,以后说不定还用得上 ...

  4. 【JavaScript脚本编程技术详解-----(一)】

    首先说明,本系列教程是写给有一定的JavaScript编程基础的同学看的,最好还有其它的编程语言经验,因为里面可能涉及一些其它的程序设计语言写的源代码,这都是我自己总结的经验,我喜欢在学习一门新的编程 ...

  5. 【Socket】linux无连接编程技术

      1.mystery引入      1)无连接编程也称为UDP编程,是采用UDP报文的形式完成的网络通信    2)UDP是一种对等通信,本身不区分服务器端和客户端    3)对等通信,最容易想到的 ...

  6. 【转】Linux Shell脚本调试技术

    本文转载自:https://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/ Shell脚本调试技术 本文全面系统地介绍了shell脚本调试技 ...

  7. Linux命令行与Shell脚本编程大全

    快来参加<Linux命令行与Shell脚本编程大全>学习吧,提升技能,展示自我. 点击链接即可进入学习:https://s.imooc.com/WTmCO6H 课程亮点适合零基础读者,从零 ...

  8. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  9. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

随机推荐

  1. ACM/ICPC 之 Floyd练习六道(ZOJ2027-POJ2253-POJ2472-POJ1125-POJ1603-POJ2607)

    以Floyd解法为主的练习题六道 ZOJ2027-Travelling Fee //可免去一条线路中直接连接两城市的最大旅行费用,求最小总旅行费用 //Time:0Ms Memory:604K #in ...

  2. js事件监听器用法实例详解

    这篇文章主要介绍了js事件监听器用法,以实例形式较为详细的分析了javascript事件监听器使用注意事项与相关技巧,需要的朋友可以参考下本文实例讲述了js事件监听器用法.分享给大家供大家参考.具体分 ...

  3. ajax+json+Struts2实现list传递实例讲解

    由于学习需要,需要通过ajax来获取后台的List集合里面的值.由于前面没有接触过,所以今天就来研究下了. 一.首先需要下载JSON依赖的jar包.它主要是依赖如下: json-lib-2.2.2-j ...

  4. URAL 2019 Pair: normal and paranormal (贪心) -GDUT联合第七场

    比赛题目链接 题意:有n个人每人拿着一把枪想要杀死n个怪兽,大写字母代表人,小写字母代表怪兽.A只能杀死a,B只能杀死b,如题目中的图所示,枪的弹道不能交叉.人和怪兽的编号分别是1到n,问是否存在能全 ...

  5. bootstrap添加时间控件

    $('#startTime').daterangepicker({ singleDatePicker: true,format:"YYYY-MM-DD HH:mm:ss",time ...

  6. 73. Set Matrix Zeroes

    题目: Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. Fo ...

  7. 二、获取微信用户openId

    /// <summary> /// 登录首页 /// </summary> /// <returns></returns> public ActionR ...

  8. poj2236(并查集)

    题目链接: http://poj.org/problem?id=2236 题意: 有n台计算机, 已知每台计算机的坐标, 初始时所有计算机都是坏的, 然后修复其中一些计算机, 已修复的计算机距离不超过 ...

  9. UML类图五种关系与代码的对应关系

    转: UML类图中的五种关系的耦合强弱比较:依赖<关联<聚合<组合<继承 一.依赖关系: (一)说明 虚线+箭头 可描述为:Uses a 依赖是类的五种关系中耦合最小的一种关系 ...

  10. codevs 2530大质数

    链接:http://codevs.cn/problem/1530/ 解题思路: 这个题最关键的剪枝还是 因子小于平方根,但不是像原来那样用. 逆转思维,与其说判断哪些是质数,不如说判断哪些不是质数,更 ...