《第4章SHell编程.pdf》由会员分享,可在线阅读,更多相关《第4章SHell编程.pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、红旗红旗 Linux 软件技术学院软件技术学院-RCE 课程之课程之系统管理系统管理 邮 电:z_an_ 电 话:13856036638 第第 4 章章 Shell 编程编程 教学内容:教学内容:Shell 的基本概念 Shell 编程基础 Shell 编程的语句 Shell 脚本的运行 教学目标:教学目标:了解 shell 的基本概念 熟悉 shell 的变量 掌握 shell 编程的常用语句和 shell 脚本的运行 教学重点:教学重点:shell 编程的常用语句 shell 脚本的运行 教学难点:教学难点:shell 功能的实现 一一 Shell 的基本概念的基本概念 1 Linux s
2、hell 的特点的特点 便于开发新命令 提高开发处理 内置编程语言 提供后台处理机制 提供管道、命令替换、自动补齐机制 2 Linux shell 的版本的版本 Bourne shell(B shell):Unix 的最初 Shell,在 Shell 编程方面比较优秀。C Shell(csh):在 C 语言编程方面性能较好 Bash Shell(bash):Bourne Shell 的增强版,Linux 系统的默认 Shell Korn Shell(ksh):综合 B Shell 和 C Shell 的特点于一身。Tcsh:C Shell 的增强版,具有命令行编程接口和历史记录功能 3 She
3、ll 下的可执行文件下的可执行文件 应用程序 Shell 脚本 可执行的二进制文件 二二 Bash Shell 编程基础编程基础 1 Shell 的变量和参数的变量和参数(1)变量的分类)变量的分类 按变量作用域来分:全局变量,局部变量 按用途划分:系统环境变量,位置参数,用户自定义变量(2)用户自定义变量用户自定义变量 变量名=值 红旗红旗 Linux 软件技术学院软件技术学院-RCE 课程之课程之系统管理系统管理 邮 电:z_an_ 电 话:13856036638 定义变量时,不用加$,但在引用变量值时必须加$可以使用 export 命令输出变量,使其成为全局变量 可使用 readonly
4、 命令,使变量成为只读变量 可使用 unset 命令,取消命令的定义 2 环境变量环境变量 Shell 在开始执行时就已经定义了一些和系统的工作环境有关的变量,用户还可以重新定义这些变量,常用常用环境变量如下:环境变量如下:HISTFILE:历史记录文件的位置 HISTSIZE:历史记录列表的大小 HOME:用户主目录 PATH:通用路径 UID:用户的 UID PS1(PS2):一(二)级提示符 TERM:终端类型 SHELL:当前使用的 Shell 程序 PWD:当前工作路径 USER:当前登录名 LANG:当前字符集 注:注:env 用于显示系统环境变量的值 3 位置参数位置参数 位置参
5、数是一种在调用 Shell 程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。位置参数之间用空格分隔,Shell 取第一个位置参数替换程序文件中的$1,第二个替换$2,依次类推。$0 是一个特殊的变量,它的内容是当前这个 Shell 程序的文件名,所以,$0 不是一个位置参数,在显示当前所有的位置参数时是不包括$0 的。4 预定义变量预定义变量 预定义变量和环境变量相类似,也是在 Shell 一开始时就定义了的变量。所不同的是,用户只能根据 Shell 的定义来使用这些变量,而不能重定义它。所有预定义变量都是由$符和另一个符号组成的,常用的 Shell 预定义变量有:$#位置参
6、数的数量。$*所有位置参数的内容。$?命令执行后返回的状态。$当前进程的进程号。$!后台运行的最后一个进程号。$0 当前执行的进程名。5 比较运算符比较运算符(1 1)数值)数值比较比较 -eq 等于则为真。-ne 不等于则为真。-gt 大于则为真。红旗红旗 Linux 软件技术学院软件技术学院-RCE 课程之课程之系统管理系统管理 邮 电:z_an_ 电 话:13856036638 -ge 大于等于则为真。-lt 小于则为真。-le 小于等于则为真。(2 2)字串测试:)字串测试:=等于则为真。!=不相等则为真。-z 字串 字串长度伪则为真。-n 字串 字串长度不伪则为真。(3 3)文件测试
7、:)文件测试:-e 文件名 如果文件存在则为真。-r 文件名 如果文件存在且可读则为真。-w 文件名 如果文件存在且可写则为真。-x 文件名 如果文件存在且可执行则为真。-s 文件名 如果文件存在且至少有一个字符则为真。-d 文件名 如果文件存在且为目录则为真。-f 文件名 如果文件存在且为普通文件则为真。-c 文件名 如果文件存在且为字符型特殊文件则为真。-b 文件名 如果文件存在且为块特殊文件则为真。另外,Linux 还提供了与(!)、或(-o)、非(-a)三个逻辑操作符,用于将测试条件连接起来,其优先顺序为:!最高,-a 次之,-o 最低。三三 Bash Shell 的常用语句的常用语句
8、 1 echo 功能:功能:显示变量值字符串 格式:格式:echo 参数 字符串 参数:参数:-n 显示字符串且不换行,默认 echo 显示字符串之后立即换行 实例:实例:echo -n “abc”2 expr 功能:功能:计算表达式 格式:格式:expr 表达式 实例:实例:expr 10*2 3 read 功能:功能:从键盘获取变量的值 格式格式:read 变量名 实例实例:read a read b c=$a+$b echo$c 4 test 功能功能:测试表达式的真假(等同于)红旗红旗 Linux 软件技术学院软件技术学院-RCE 课程之课程之系统管理系统管理 邮 电:z_an_ 电
9、话:13856036638 格式格式:test 表达式 5 if 功能功能:条件分支选择 格式:格式:if 条件表达式 then 条件为真时的命令串 else 条件为假时的命令串 fi 实例实例:if -x /sbin/quotaon then /sbin/quotaon avug else echo“quotaon no exists.”fi 6 case 功能:功能:多路分支 格式:格式:Case 参数 in 值 1)语句 1;值 2)语句 2;、*)语句 N;esac 实例实例:#vi /etc/quotaman#!/bin/bash case “$1”in start)/sbin/qu
10、ataon avug ;stop)/sbin/quotaoff avug ;restart)/sbin/quotaoff avug 红旗红旗 Linux 软件技术学院软件技术学院-RCE 课程之课程之系统管理系统管理 邮 电:z_an_ 电 话:13856036638 /sbin/quotaon -avug ;*)echo “enter start/stop/restart”;esac 7 for 功能功能:循环执行多条语句 格式格式:for 参数 in 字符串 do 循环体 done 实例实例:for i in /bin/*do echo$i done 8 while 功能:功能:实现条件循
11、环,当条件为真时执行循环体 格式格式:while条件/命令 do 循环体 done 实例实例:while “$a”=“$b”do sleep 5 done 9 until 功能:功能:实现条件循环,当条件为假时执行循环体 格式:格式:until 条件/命令 do 循环体 done 实例:实例:myvar=0 until$myvar-eq 10 do echo$myvar 红旗红旗 Linux 软件技术学院软件技术学院-RCE 课程之课程之系统管理系统管理 邮 电:z_an_ 电 话:13856036638 myvar=$($myvar+1)done 10 函数函数 格式:格式:function
12、函数名(参数)函数体 实例实例:#!/bin/bash start()if -x /sbin/quotaon then /sbin/quotaon avug fi stop()if -x/sbin/quotaoff then/sbin/quotaoff avug fi restart()stop start case$1 in start)start;stop)stop;restart)restart;*)echo“error!”;esac 红旗红旗 Linux 软件技术学院软件技术学院-RCE 课程之课程之系统管理系统管理 邮 电:z_an_ 电 话:13856036638 11 exit
13、功能功能:退出脚本文件 格式格式:exit(0 或 1)实例实例:if -f /etc/sysconfig/network then/etc/rcd/init.d/network start else exit 1 fi 12 break 功能功能:退出循环 格式格式:break 13 continue 功能功能:继续下一次循环 格式格式:continue 14 exec 功能功能:调用其它命令,且不创建新进程 格式格式:exec 命令 四四 脚本的运行方式脚本的运行方式 方式一:方式一:1改变脚本文件的属性,让用户具有执行权改变脚本文件的属性,让用户具有执行权#chmod 权限值 脚本文件 2运行脚本文件运行脚本文件#路径/文件名 参数 实例实例:#/etc/rc.d/init.d/dhcpd restart 方式二:方式二:#Shell 名称名称 文件名文件名 实例实例:#bash abc
限制150内