370 likes | 905 Views
Shell 编程. 9-1 Shell 的基本概念. 1.shell 的定义. 2. Linux shell 的常è§ç‰ˆæœ¬ B shell (bsh):Unix çš„æœ€åˆ Shell ,在 Shell 编程方é¢æ¯”较优秀。 C Shell (csh): 在 C è¯è¨€ç¼–程方é¢æ€§èƒ½è¾ƒå¥½ Bash Shell (bash):Bourne Shell 的增强版, Linux 系统的默认 Shell K shell (ksh) ï¼šç»¼åˆ B Shell å’Œ C Shell 的特点于一身。 Tcsh : C Shell 的增强版,具有命令行编程接å£å’ŒåŽ†å²è®°å½•åŠŸèƒ½. 说明:
E N D
9-1 Shell的基本概念 1.shell的定义
2. Linux shell的常见版本 • B shell (bsh):Unix的最初Shell,在Shell编程方面比较优秀。 • C Shell (csh):在C语言编程方面性能较好 • Bash Shell (bash):Bourne Shell的增强版,Linux系统的默认Shell • K shell (ksh):综合B Shell和C Shell 的特点于一身。 • Tcsh :C Shell的增强版,具有命令行编程接口和历史记录功能
说明: • 改变用户的shell • #vi /etc/passwd • 切换用户的shell • #输入shell的可执行文件
9-2 Shell编程基础(Base Shell) 1. Shell的变量和参数 (1)变量的分类 • 按数据类型: 字符串变量,数值变量 • 按作用域划分: 全局变量,局部变量 • 按用途划分: 用户自定义变量,系统环境 变量,位置参数
(2)自定义变量 • 定义:变量名=值 • 实例: MyHost=“www.linux.net”
(3)环境变量 • HISTFILE //设置系统的历史记录文件 • HISTSIZE //设置命令历史记录文件的大小 • HOME //设置用户主目录 • PATH //设置通用路径 • UID //用户的UID • PS1(PS2)//一(二)级提示符 • TERM //终端类型
(4)位置参数 • 位置参数:$1-$9 • 特殊参数: • $0 //脚本名 • $# //传递到脚本的参数个数 • $* //所有传递到脚本的参数 • $$ //脚本运行的当前进程的PID
(5)变量的引用 格式:$变量名 实例: 定义变量:myname=“xiao li” 引用变量:$myname
2. Shell的输出和输入 (1)echo 功能:将若干字符输出到标准输出 格式:echo [参数] <字符串> 参数: -n //输出后不换行 注意: 字符串要用双引号作标记,同时可以 引用变量 实例:echo -n “Please input a number:”
(2)read 功能:从标准输入读取数值赋给指定变量 格式:read <变量名> 实例: # read a 5 //键盘输入 # echo $a 5 //屏幕显示
3.运算符 • 算术运算符:+(加),-(减),*(乘), /(除) • 逻辑运算符:-a(与),-o(或),!(非) • 数值比较运算符: -eq(等于),-ne(不等于), -lt(小于),-le(小于等于), -gt(大于), -ge(大于等于)
操作符: • -x filename //判断可执行文件是否存在 • -f filename //判断普通文件是否存在 • -r filename //判断文件是否只读 • -w filename //判断文件是否可写 • -s filename //判断文件是否大于0
4. Shell脚本文件介绍 • Shell脚本的第一行总是以# ! /bin/bash开头,用来指明运行脚本所使用的shell解释器 • 脚本中的说明部分每一行都要以#开头来表示本行为注释行 • Shell脚本是从上到下,按行解释执行的 • 运行脚本文件前要确保其具有执行权限属性
Shell脚本实例: • #vi /test1 #!/bin/bash # /test1 System=“RedHat Linux” echo $1 echo $2 echo $System • #chmod 755 /test1
运行shell脚本 格式:# 脚本文件 # /test1 you need // 位置变量$1的值为you,$2为need • 运行结果 you need RedHat Linux
9-3 Shell的常用语句 1. Test语句 • 功能:测试表达式的真假 • 格式:test 表达式 • 实例: if test 1 –lt 2 then echo “1<2” fi
2. If语句 • 功能:条件选择 • 格式: (1) if 条件 then 执行语句 fi
(2) if 条件1 then 执行语句1 else 执行语句2 fi
(3) if 条件1 then 执行语句1 elif 条件2 then 执行语句2 fi
(4) if 条件1 then 执行语句1 elif 条件2 then 执行语句2 else 执行语句3 fi
实例: if [ -x /sbin/quotacheck ] then /sbin/quotacheck –avug else echo “quotacheck no exists!!” fi
3. Case语句 • 功能:多路选择 • 格式:case 变量 in 值1) 语句1 ;; 值2) 语句2 ;; ……… 值*) 语句n ;; esac
实例: #vi test2 read a case $a in 1) echo “a=1” ;; 2) echo “a=2” ;; *) echo “a != 1,2” ;; esac
4. For语句 • 功能:循环执行语句 • 格式:for 变量 in 变量值列表 do 循环体 done • 说明:变量从列表里取值一次,for循环即执行一次循环体
实例: # vi test4 #! /bin/bash for a in /home/* do echo $a done
5. While语句 • 功能:实现条件循环 • 格式: while [条件] do 循环体 done
实例: #! /bin/bash num=0 while [ $num -lt 5 ] do num=`expr $num + 1` echo $num done
6.Until语句 • 功能:条件循环 • 格式: until 条件 do 循环体 done • 说明:until循环执行一系列命令直到条件为真是停止。
实例: #! /bin/bash i=0 until [ $i –ge 5 ] do echo $i i=`expr $i + 1` done
7. 函数 • 格式: 函数名(参数) { 函数体 }
实例: # /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 }
echo -n “please input string:” read a case $a in start) start ;; stop) stop ;; restart) restart ;; esac
8. Exit • 功能:退出脚本 • 实例: if [ -f /etc/sysconfig/network ] then /etc/rc.d/init.d/network start else exit fi
上机作业 • 了解基本的编程常识 • 掌握shell编程的基本元素 • 掌握shell编程的基本语句