44
Shell Scripts part 2 授课教师:李正华

Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

  • Upload
    others

  • View
    21

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

Shell Scripts part 2

授课教师:李正华

Page 2: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

什么是 shell script

● 批处理文件● 利用 shell 的功能写出的一个程序 (program)● 将许多命令写在一起,进行复杂的操作

● 数组、循环、条件、逻辑判断等

Page 3: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

为什么学习 shell script

● 自动化管理● 追踪与管理系统的重要工作● 简单的入侵检测功能● 连续命令单一化● 简单的数据支持● 跨平台支持与学习历程较短

Page 4: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

第一 script 的编写与执行

Page 5: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

编写 script 的良好习惯

● 注释详细,记录编程的思路,和修改过程● 清晰:用 [tab] 对齐● 用 vim :语法检测● 变量、函数定义遵循一定的规范

Page 6: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

交互式脚本:键盘输入

Page 7: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

利用日期进行文件的创建

Page 8: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

取得命令返回的信息

● $(command)● $(date +%Y%m%d}

Page 9: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

数值运算

● $(())● $(( 13 * 3))

Page 10: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

利用 test 判断

Page 11: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

利用 test 测试

● 关于文件类型判断 test -e filename

Page 12: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

利用 test 测试

● 关于文件权限的判断 : test -r filename

Page 13: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

利用 test 测试

● 关于文件新旧的判断 test file1 -nt file2

Page 14: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

利用 test 测试

● 整数比较 : test n1 -eq n2●

Page 15: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

利用 test 测试

● 字符串比较

Page 16: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

利用 test 测试

● 多重条件判断( and, or, ! )

Page 17: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

利用 test 测试:例子

Page 18: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

利用 [] 测试

● [-z "$HOME"]; echo $?

Page 19: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

Shell scirpt 默认变量(命令行参数)

Page 20: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

Shell scirpt 默认变量(命令行参数)

● 例子

Page 21: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

Shell scirpt 默认变量(命令行参数)

● shift ,参数变量号码偏移

Page 22: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

条件判断 if then

● 单层判断

Page 23: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

条件判断 if then

● 单层判断

Page 24: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

条件判断 if then

● 多重判断

Page 25: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

条件判断 if then

● 多重判断

Page 26: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

条件判断 if then

● 多重判断

Page 27: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

条件判断 if then

● 多重判断

Page 28: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

监听网络服务端口

Page 29: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

计算退伍日期

Page 30: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

计算退伍日期 (2)

Page 31: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

case , esac 判断

Page 32: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

case , esac 判断

Page 33: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

case , esac 判断

Page 34: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

函数 function

● 做一件事情● 输入(参数)、输出(返回值)

Page 35: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

函数 function

Page 36: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

函数 function (传参数)

● $0, $1, $2 ( 和 shell script 本身的 $0 不同)

Page 37: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

循环 (loop)

● while do done

Page 38: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

循环 (loop)

Page 39: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

循环 (loop)

Page 40: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

循环 (loop)

● for do done

第一次循环时 ,$val = con1;第二次, $val=con2; ...

Page 41: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

循环 (loop)

Page 42: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

循环 (loop)

● 测试目录下文件属性

Page 43: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

循环 (loop)

● for do done (面向数值步长)

初始值 i=1;限制值 i<=100;执行步长: i=i+1

Page 44: Shell Scripts part 2 授课教师:李正华 - HITir.hit.edu.cn/~lzh/linux2014spring/shell-script-part-2...2014/04/10  · 什么是shell script 批处理文件 利用shell的功能写出的一个程序(program)

循环 (loop)