7.shell脚本编程

  1. shell脚本的基础知识

  1. 编程语言分类

  1. 编译型语言

  1. 解释型语言

  1. shell脚本语言是解释型语言

  1. shell脚本的本质

  1. shell命令的有续集合

  1. shell编程的基本过程

  1. 建立shell文件.sh

  1. 包含任意多行操作系统命令或shell命令的文本文件

  1. 赋予shell文件执行权限

  1. 用chmod命令修改权限

  1. 执行shell文件 ./文件名.sh bash 文件名

  1. 直接在命令行上调用shell程序

  1. shell变量

  1. shell允许用户建立变量存储数据,但不支持数据类型(整型、字符、浮点型),将任何赋给变量的值都解释为一串字符

  1. variable=value

  1. Bourne Shell有如下四种变量:

  1. 用户自定义变量

  1. 使用unset命令 取消自定义变量

  1. 位置变量即命令行参数

  1. $0与键入的命令行一样,包含脚本文件名

  1. $1,$2,....$9分别包含第一个到第九个命令行参数

  1. $#包含命令行参数的个数

  1. $@包含所有命令行参数"$1,$2,.....$9"

  1. $?包含前一个命令的退出状态

  1. $*包含所有命令行参数:"$1,$2,....$9"

  1. $$包含正在执行进程的ID号

  1. 举例如图:

0代表正常退出

  1. 预定义变量

  1. 环境变量

  1. shell常用环境变量

  1. HOME:/etc/passwd文件中列出的用户主目录

  1. IFS:Internal Field Separator,默认为空格,tab以及换行符

  1. PATH:shell搜索路径

  1. PS1,PS2:默认提示符($)以及换行提示符(>)

  1. TERM:终端类型,常用的有vt100,ansi,vt200,xterm等

  1. shell脚本功能语句

  1. 说明性语句

  1. shell程序由零或多条shell语句构成。shell语句包括三类:

  1. 说明性语句

  1. 以#号开始到改行结束,不被解释执行(注释语句)

  1. 功能性语句

  1. 任意的shell命令、用户程序或其他shell程序

  1. 结构性语句

  1. 条件测试语句

  1. 多路分支语句

  1. 循环语句

  1. 循环控制语句等

  1. 常用功能性语句

  1. read从标准输入读入一行,并赋值给后面的变量,其语法为:

  1. read var

  1. 把读入的数据全部赋给var

  1. read var1 var2 var3

  1. 把读入行中的第一个单词(word)赋给var1,第二个单词赋给var2,。。。。把其余所有的词赋给最后一个变量

  1. 如果执行redad语句时标准输入无数据,则程序在此停留等候到数据的到来或者被终止运行

  1. eg:

数据结果:

  1. expr命令

  1. 算术运算命令expr主要用于进行简单的整数运算,包括+-*/%等操作

  1. eg:

  1. $expr 12 + 5 \* 3

  1. $expr 3 - 8/2

  1. $num=9 $sum=`expr $num \* 6` echo $sum

  1. 测试语句

  1. test语句可测试三种对象

  1. 字符串

  1. 整数

  1. 文件属性

  1. 每种测试对象都有若干测试操作符

  1. eg: test "$answer" = "yes" 变量answer的值是否为字符串year

  1. eg: test $num -eq 18 变量num的值是否是18

  1. eg: test -d tmp 测试tmp是否为一个目录名

  1. 字符串测试

  1. 整数测试

  1. a -eq b 测试a与b是否相等

  1. a -ne b 测试a与b是否不想等

  1. a -gt b 测试a是否大于b

  1. a -ge b 测试a是否大于等于b

  1. a -lt b 测试a是否小于b

  1. a -le b 测试a是否小于等于b

  1. 文件测试

  1. -d name 测试name是否是一个文件目录

  1. -e name 测试一个文件是否存在

  1. -f name 测试name是否为普通文件

  1. -L name 测试name是否为符号连接

  1. -r name 测试name文件是否存在且为可读

  1. -w name 测试name文件是否存在且为可写

  1. -x name 测试name 文件是否存在且为可执行

  1. -s name 测试name文件是否存在且长度不为0

  1. f1 -nt f2 测试文件f1 是否比文件f2更新

  1. f1 -ot f2 测试文件f1 是否比文件f2更旧

4.shell脚本分支语句

  1. 条件语句

  1. if...then..fi

  1. 语法结构:

if 表达式

then

命令表

fi

如果表达式为真,则执行命令表中的命令,否则退出if语句

if和fi是条件语句的语句括号,必须成对使用

命令表中的命令可以是一条,也可以是若干条

  1. 多路分支语句

  1. case .....esac

  1. 语法为:

case 字符串变量 in

模式1)

命令表1

;;

模式2|模式3)

命令表2

;;

.....

模式n)

命令表n

;;

  1. case语句只能检测字符串变量

  1. 各模式中可用文件名元字符,以右括号结束

  1. 一次可以匹配多个模式,用"|"分开

  1. 命令表以单独的双分号行结束,退出case语句

  1. 模式n常写为字符*表示其他所有模式

  1. 最后一个双分号行可以省略

  1. 循环语句

  1. for用法:

for 变量名 in 单词表

do

命令表

done

  1. while用法

  1. 语法结构:

while m命令或表达式

do

命令表

done

while语句的退出状态为命令表中被执行的最后一条命令的退出状态

  1. 循环控制语句break/continue

5.shell函数

  1. shell函数调用

  1. 函数变量作用域,默认全局,local是局部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值