Shell及其初级编程_第1页
Shell及其初级编程_第2页
Shell及其初级编程_第3页
Shell及其初级编程_第4页
Shell及其初级编程_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 Shell概述概述 第第8讲讲 Shell及其编程及其编程 2 shell脚本脚本 3 shell脚本变量脚本变量 1 Shell概述概述 lshell就是就是可以接受用户输入命令的程序可以接受用户输入命令的程序。 lshell隐藏隐藏了操作系统低层的了操作系统低层的细节细节。 lUnix下的图形用户界面下的图形用户界面Gnome和和KDE,有时也被叫,有时也被叫 做做“虚拟虚拟shell”或或“图形图形shell”。 lLinux操作系统下的操作系统下的shell既是既是用户交互界面用户交互界面,也是控,也是控 制系统的制系统的脚本语言脚本语言。 l在在Linux系列操作系统下,系列操作

2、系统下,shell是控制系统启动、是控制系统启动、X Window启动、和很多其他实用工具的启动、和很多其他实用工具的脚本解释程序脚本解释程序。 1.1 Bourne Shell l 第一个第一个标准标准Linux Shell是是1970年底在年底在V7 Unix(AT $2 = $2 ; echo the number of parameter is $# ; echo the return code of last command is $?; echo the script name is $0 ; echo the parameters are $* ; echo the parame

3、ters are $ ; 运运 行行 结结 果果 #!/bin/sh #to explain the application of system variables. echo $1 = $1 ; $2 = $2 ; echo the number of parameter is $# ; echo the return code of last command is $?; echo the script name is $0 ; echo the parameters are $* ; echo the parameters are $ ; 3.2 环境变量环境变量 l登入系统就获得一个登

4、入系统就获得一个shell它占据一个进程,输入的它占据一个进程,输入的 命令都属于这个命令都属于这个shell进程的子进程,选择此进程的子进程,选择此shell后,后, 获得一些环境设定,即获得一些环境设定,即环境变量环境变量。 l环境变量环境变量约束约束用户行为,也用户行为,也帮助帮助实现很多功能,包括实现很多功能,包括 主目录的变换、自定义显示符的提示方法、设定执行文主目录的变换、自定义显示符的提示方法、设定执行文 件查找的路径等。件查找的路径等。 常用的环境变量常用的环境变量 按键按键命令命令 PATH 命令搜索路径命令搜索路径,以冒号为分隔符以冒号为分隔符.但当前目录不在但当前目录不在

5、 系统路径里系统路径里 HOME用户用户home目录的路径名目录的路径名,是是cd命令的默认参数命令的默认参数 COLUMNS定义了命令编辑模式下可使用命令行的长度定义了命令编辑模式下可使用命令行的长度 EDITOR默认的行编辑器默认的行编辑器 VISUAL默认的可视编辑器默认的可视编辑器 FCEDIT命令命令fc使用的编辑器使用的编辑器 HISTFILE命令历史文件命令历史文件 HISTSIZE命令历史文件中最多可包含的命令条数命令历史文件中最多可包含的命令条数 常用的环境变量常用的环境变量 按键按键命令命令 HISTFILESI命令历史文件中包含的最大行数命令历史文件中包含的最大行数 IF

6、S定义定义shell使用的分隔符使用的分隔符 LOGNAME用户登录名用户登录名 MAIL 指向一个需要指向一个需要shell监视修改时间的文件监视修改时间的文件.当该文件当该文件 修改后修改后,shell发送消息发送消息You hava mail给用户给用户 MAILCHECKSHELL检查检查MAIL文件的周期文件的周期,单位是秒单位是秒 MAILPATH 功能与功能与MAIL类似类似.但可以用一组文件但可以用一组文件,以冒号分隔以冒号分隔, 每个文件后可跟一个问号和一条发向用户的消息每个文件后可跟一个问号和一条发向用户的消息 SHELLSHELL的路径名的路径名 TERM终端类型终端类型

7、 常用的环境变量常用的环境变量 按键按键命令命令 TMOUT SHELL自动退出的时间自动退出的时间,单位为秒单位为秒, 0为禁止为禁止 SHELL自动退出自动退出 PROMPT_COMMAND指定在主命令提示符前应执行的命令指定在主命令提示符前应执行的命令 PS1主命令提示符主命令提示符 PS2 二级命令提示符二级命令提示符,命令执行过程中要求输入数据时命令执行过程中要求输入数据时 用用 PS3select的命令提示符的命令提示符 PS4调试命令提示符调试命令提示符 MANPATH寻找手册页的路径寻找手册页的路径,以冒号分隔以冒号分隔 LD_LIBRARY_PATH寻找库的路径寻找库的路径,

8、以冒号分隔以冒号分隔 3.2 环境变量环境变量 例:使用例:使用env命令查看环境变量,并分析。命令查看环境变量,并分析。 为了方便查看,使用重定向命令将环境变量存储到为了方便查看,使用重定向命令将环境变量存储到 enviroment文件中,命令:文件中,命令:env enviroment,然后,然后 使用编辑器打开该文件使用编辑器打开该文件 3.2 环境变量环境变量 3.3 用户自定义变量用户自定义变量 例:哪些变量名是合法的例:哪些变量名是合法的 desk; 模式模式2) 命令序列命令序列2 ; *) 默认执行的命令序列默认执行的命令序列 esac 4.3 case语句语句 case行尾必

9、须为单词行尾必须为单词“in” 每一个模式必须以右括号每一个模式必须以右括号“)”结结 束束 两个分号两个分号“;”表示命令序列结束表示命令序列结束 匹配模式中可是使用方括号表示一匹配模式中可是使用方括号表示一 个连续的范围,如个连续的范围,如0-9 使用竖杠符号使用竖杠符号“|”表示或。表示或。 最后的最后的“*)”表示默认模式,当使表示默认模式,当使 用前面的各种模式均无法匹配该变量用前面的各种模式均无法匹配该变量 时,将执行时,将执行“*)”后的命令序列后的命令序列 例:编写脚本例:编写脚本shell,从键盘输入数字,从键盘输入数字 1、2、3 #!/bin/bash read -p p

10、lease input a (Y/N): num case $num in 1) echo the number of you input is 1 ; 2) echo the number of you input is 2 ; 3) echo the number of you input is 3 ; *) echo the number of you input is 1 2 3 ; esac 4.3 case语句语句 while语句语句是是shell提供的一种提供的一种循环循环机制,当条件为真的机制,当条件为真的 时候它允许循环体中的命令继续执行。否则退出循环时候它允许循环体中的命令

11、继续执行。否则退出循环 4.4 while语句语句 while 条件测试命令条件测试命令 do 命令序列命令序列 done 语句格式:语句格式: 例:编写脚本,输入整数例:编写脚本,输入整数n,计算,计算1到到n的和的和 4.4 while语句语句 #!/bin/bash read -p please input a number: n sum=0 i=1 while $i -le $n do sum=$sum+$i i=$i+1 done echo the sum of 1+2+3+.n is $sum until语句语句是当是当条件满足时退出循环条件满足时退出循环,否则执行,否则执行 循环

12、,循环,语句格式为:语句格式为: 4.5 until语句语句 while 条件测试命令条件测试命令 do 命令序列命令序列 done 例:编写脚本,输入整数例:编写脚本,输入整数n,计算,计算1到到n的和的和 4.5 until语句语句 #!/bin/bash read -p please input a number: n sum=0 i=1 until $i -gt $n do sum=$sum+$i i=$i+1 done echo the sum of 1+2+3+.n is $sum for语句的格式:语句的格式: 4.6 for语句语句 for 变量名变量名 in 取值列表取值列表

13、 do 命令序列命令序列 done 例:计算例:计算1到到n的和的和 #!/bin/bash read -p please input a number: n sum=0 i=1 for i in seq 1 $n do sum=$sum+$i i=$i+1 done echo the sum of 1+2+3+.n is $sum 1. break语句语句 4.7 循环控制语句循环控制语句 break语句用于语句用于for、while和和until循环语句中,忽略循循环语句中,忽略循 环体中任何其他语句和循环条件的限制,强行退出循环环体中任何其他语句和循环条件的限制,强行退出循环 例:编写脚

14、本,输入整数例:编写脚本,输入整数n,但我们只计算,但我们只计算1到到10的和的和 4.7 循环控制语句循环控制语句 #!/bin/bash read -p please input a number: n sum=0 i=1 for i in seq 1 $n do if $i -gt 10 then break fi sum=$sum+$i i=$i+1 done echo the sum of 1+2+3+.n is $sum 2. continu语句语句 4.7 循环控制语句循环控制语句 continue语句应用在语句应用在for、while和和until语句中,用于让语句中,用于让

15、脚本跳过其后面的语句,执行下一次循环脚本跳过其后面的语句,执行下一次循环 例:编写脚本,输入整数例:编写脚本,输入整数n,计算,计算1到到n的奇数和的奇数和 #!/bin/bash read -p please input a number: n sum=0 i=1 4.7 循环控制语句循环控制语句 for i in seq 1 $n do if $i%2 -eq 0 then i=$i+1 continue fi sum=$sum+$i i=$i+1 done echo the sum of 1+2+3+.n is $sum 回目录回目录 5 Shell函数函数 5.1 函数的声明函数的声明

16、 5.2 函数的调用函数的调用 5.3 函数的参数传递函数的参数传递 shell函数允许将一组命令或语句形成一个可函数允许将一组命令或语句形成一个可 用语句块。用语句块。 shell把函数块存放在内存中,节省了程序加把函数块存放在内存中,节省了程序加 载的时间;载的时间; shell以一种内部格式来存放这些函数,节省以一种内部格式来存放这些函数,节省 了解释的时间;了解释的时间; 函数组成函数组成:函数名和函数体:函数名和函数体 函数在使用前必须声明,有两种格式:函数在使用前必须声明,有两种格式: 5.1 函数的声明函数的声明 function函数名()函数名() 命令命令1 函数名()函数名

17、() 命令命令1 例:定义一个函数,脚本如下例:定义一个函数,脚本如下 5.1 函数的声明函数的声明 #!/bin/bash hello () echo todays date is date hello 5.2 函数的调用函数的调用 函数的调用:函数的调用: 1. 在同一个脚本中,使用函数名直接调用函数在同一个脚本中,使用函数名直接调用函数 2. 函数在另外一个脚本中,调用方法函数在另外一个脚本中,调用方法 例:两个脚本文件例:两个脚本文件/home/ycs/func.sh和和/home/ycs/shell- test/while.sh,它们不在同一目录,它们不在同一目录 脚本脚本func.

18、sh的代码的代码 #!/bin/bash echo todays date is date 脚本脚本/home/ycs/shell-test/while.sh的代码中定义了函数的代码中定义了函数 func.sh中调用中调用while.sh, 需要将需要将func.sh的代码:的代码: #!/bin/bash function haha n=50 sum=0 i=1 for i in seq 1 $n do sum=$sum+$i i=$i+1 done echo the sum of 1+2+3+.n is $sum haha #!/bin/bash echo todays date is d

19、ate 增加一行:增加一行: bash /home/ycs/shell-test/while.sh 5.3 函数的参数传递函数的参数传递 在函数调用的过程中,如果有参数要传递时,参在函数调用的过程中,如果有参数要传递时,参 数直接跟在函数名的后面,不用括号括起来。数直接跟在函数名的后面,不用括号括起来。 例:编辑脚本,在脚本中用函数计算计算例:编辑脚本,在脚本中用函数计算计算1到到n的和的和 #!/bin/bash function haha sum=0 i=1 n=$1 for i in seq 1 $n do sum=$sum+$i i=$i+1 done echo the sum of

20、1+2+3+.n is $sum haha 100 回目录回目录 应用实例应用实例1 6 应用实例应用实例 编写编写shell脚本,执行后,打印一行提示脚本,执行后,打印一行提示“Please input a number:”,逐次打印用户输入的数值,直到用户输入,逐次打印用户输入的数值,直到用户输入 “end”为止。为止。 #!/bin/sh unset var while $var != end do echo -n please input a number: read var if $var = end then break; fi echo var is $var done 应用实例

21、应用实例2 6 应用实例应用实例 编写编写shell脚本,使用脚本,使用ping命令检测命令检测 192.168.0.1192.168.0.100共共100部主机目前是否能与部主机目前是否能与 当前主机联通当前主机联通 #!/bin/bash network=192.168.0 for sitenu in $(seq 1 100) do ping -c 1 -w 1 $network.$sitenu & /dev/null & result=0 | result=1 if $result = 0 then echo Server $network.$sitenu is UP. else echo Server $network.$sitenu is DOWN. fi done 应用实例应用实

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论