Shell编程

上一篇 / 下一篇  2009-02-09 22:30:56 / 个人分类:Shell 编程

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP
51Testing软件测试网3@Vo{"e v+I

教学内容:
v(K rk.d+B B0Shell的基本概念51Testing软件测试网5O vx#M*vP
Shell编程基础
"Y Q/klV:w5D{0Shell编程的语句51Testing软件测试网1Gp\ W:[o
Shell脚本的运行51Testing软件测试网#MC!~3M+i[G
教学目标:
\m Ob9GS0了解shell的基本概念51Testing软件测试网SPm)c fs.Q2D
熟悉shell的变量
"J/T fO(\2L1qa-HL |0掌握shell编程的常用语句和shell脚本的运行51Testing软件测试网x`(t.H2L
教学重点:
%K9`%W7^#o0shell编程的常用语句
:ap#k#?7^0shell脚本的运行51Testing软件测试网)j6fAfc7~
教学难点:51Testing软件测试网H[U)_}0wW
shell功能的实现51Testing软件测试网\ K[ ao;x#q
Shell的基本概念51Testing软件测试网u%C/f3j/n&hON
Linux shell的特点
tH*iS+`2I1V0便于开发新命令51Testing软件测试网q)lg0d.Wx
提高开发处理
3x? @yL {Q'j_6Y0b0内置编程语言
lJ"` u,zP&\0提供后台处理机制
,Tl h o-_4PZ0提供管道、命令替换、自动补齐机制
n rq2Czqg1X4i0Linux shell的版本
v(v1@ r:eB0Bourne shell(B shell):Unix的最初Shell,在Shell编程方面比较优秀。
A t/jeYv%B8QA0C  Shell(csh):在C语言编程方面性能较好
}'J/{/o6NW5_0Bash Shell(bash):Bourne Shell的增强版,Linux系统的默认Shell
e,M*[N^E0Korn Shell(ksh):综合B Shell和C Shell 的特点于一身。51Testing软件测试网k-zs|)X"Rw6Y
Tcsh:C Shell的增强版,具有命令行编程接口和历史记录功能
h;Cb*]0k{(j0命令的解释过程51Testing软件测试网!L i([v'a Q c

注:(1)设定命令的别名:
:} { D-tN0格式:Alias 命令名=‘原命令名’51Testing软件测试网bWh:K#n ^Q6n
实例:Alias md=’mkdir’51Testing软件测试网)t(M}_kU7_(n$~
(2)更改提示符:51Testing软件测试网OonrE$h
格式:PS1=字符串(一级提示符)51Testing软件测试网r@;n/x&Em E*Y
PS2=字符串(二级提示符)〕
"Dhn6q6xr_2irW0Shell编程基础(Base Shell)51Testing软件测试网0O`4K\L
Shell的变量和参数
yiW)yu+[ s-}0(1)变量的分类51Testing软件测试网.Pn3sC(pu G.R
按变量作用域来分:全局变量,局部变量
f)_#NJ#C_? P0按用途划分:系统变量环境,位置参数,用户自定变量51Testing软件测试网;f PL]9l:B[#n3MU0_
按数据类型:字符串变量,数值变量
OU;Jdbh0(2)变量的定义51Testing软件测试网 dU'B}-n8}
MyHost=”www”51Testing软件测试网${.aV1Ue-E[9d#|A
(Export全局变量:Local局部变量)51Testing软件测试网9X0r&O!dxlo l9P
环境变量
?5~+eZs3U T0HISTFILE:历史记录文件51Testing软件测试网 AIPe5@
HISTSIZE:历史记录列表的大小
| d8H!D4Zo mV0Home:用户主目录51Testing软件测试网'Do {X$M,g.B%I
Path:通用路径51Testing软件测试网2g;qhb;b
UID:用户的UID
Z:X'xe X]0PS1(PS2):一(二)级提示符51Testing软件测试网 nb1Zf}/SM)rT
TERM:终端类型
@'}P3`8~ E*o0位置参数
J ~y-_rVLb0位置参数:$1-$9
1jn!asKT0特殊参数:$0 命令名51Testing软件测试网[2^ j#M9U7S$c
          $# 参数的个数51Testing软件测试网5{Q+l?+AX
          $* 所有的参数
YG9ax,?E0Wy z0          $$命令的PID51Testing软件测试网 @![)_n%z
实例:#Vi    /sys51Testing软件测试网R+l,Nt!Ko
    #!/bin/bash   (指定默认Shell)
YiI&b'j l0    System=”RedHat Linux”51Testing软件测试网&rQ_d.|Nqe\ {
    Ech$151Testing软件测试网7L%L'h8U|L+aP\
    Ech$2
5R7VF"v,t-qm&W8G#Q0    Ech$System
0YKb%P i0    #chmod 755 /sys
c/rX)WB)l0    # /sys  you  need51Testing软件测试网9V/Z\Bs`$j{
    you need RedHat Linux
#q-hx5j?He5r0运算符51Testing软件测试网Jv}V {9I|y3l DD
  算术运算符:+,-,*,/,>>,<<51Testing软件测试网F9w+z_Oh
  逻辑运算符:&&(与),||(或),!(非)51Testing软件测试网*YH%q.G'W2G
  比较运算符:=(-eq),>(-gt),<(-lt),!=(-ne),<=(-le),>=(-ge)51Testing软件测试网)N-{6q0G0X b1`E g4V
  操作符:-x (判断可执行文件是否存在)
Tg-I+P*KS`H0              -f(判断普通文件是否存在)51Testing软件测试网?2p&R)h-`+v5o[ _3F
              -r(判断只读文件)
-vbmVDk4O s0W(W0              -w(判断可写文件)51Testing软件测试网uZ ]:Ze6qi
              -s数字(判断文件大小)
8[g&yV#te0Shell的常用语句
:aQy"_-Ad3U7V"r'g }0g;u&O0Test51Testing软件测试网|L&J|2z"}*^h!A5{
功能:测试表达试的真假
j2N7v@5~_wtME0格式:Test 表达式
8O8b \eW4v:hD0实例:if  test 1>251Testing软件测试网3I.\ogv{$e\
then51Testing软件测试网R y"b2C({+Pm1{dqX u
echo “1>2”51Testing软件测试网%JFiM-g
fi51Testing软件测试网,M$]7z'RNXqK)H
      if  [1>2]  
Q*{l gkq+eO0then echo “1>2”
:t FZi;jq ~*``2d0  fi
4o(@%\![Ud3b0if51Testing软件测试网 K/d@]*b1`
功能:条件分支选择51Testing软件测试网\B2d,gNq3tQ
格式:(1)if  条件           (2)  if  条件    51Testing软件测试网 I\\oE
           then                      then
cI1Gf1J5h]1PWC0          语句                       语句
f#um,Yy1B8?%a0           fi                        else
${(t\ e+VZ4Y v#Z0                                    语句2
%AY-DJ[0                                      fi51Testing软件测试网Q3} X)d R4s
      (3)if  条件               (4)if  条件51Testing软件测试网t,V cz#@.`
         then                        then51Testing软件测试网Lg$e.C_RP?vz
        语句1                     语句151Testing软件测试网R0m8s7DPG G
      elif  条件2                   elif  条件251Testing软件测试网&^H6S]/XS1d
       语句2                      语句251Testing软件测试网7|A+F9H1g
      fi                             、、、51Testing软件测试网RS oq8bH&l
                                  else51Testing软件测试网 wq!A#o.y^ iGU
                                   语句n
V;~s%n2R2j+IV1|0                                    fi51Testing软件测试网:l(F1N(A2U}
实例:1) if [-X  /shell/quotaon]
$@j+b!\I$@3Uf0          then
0O B@0Z Y3{3q0         /sbin/quotaon –qvug
jn~&R9Fg6a)Jx0        else
"Z7~*~9D f K/g{0        echo “quotaon no exists.”
?w2j4J6E(b0fi51Testing软件测试网/Hr O+F7R\'SUJL
2)if [-x  /etc/crontab/]
MKqY!D0    echo “crontab file exists.”51Testing软件测试网a4x x5}0z
    elif  [-x/var/spool/cron/root]
MoaeM h4N}0     echo “root’s crontab file exists.”
,ZS lc_,G|3z(u0     fi
zz%Rg3T0Case
7u~rm+@V0功能:多路分支
3s`+m'WwQH s0格式:Case  参数 In
`}lK1e4H F9e*x;o0        值1)语句1;;51Testing软件测试网 vv,yz+RF~
        值2) 语句2;;
)Y \E p;S@~+k#~\0         、、、、、
)e.j;i jMfW6J0        *)语句N;;
/kQ#y2dQL,T`9^_0       esac
X'GEMUc G5l0实例: #Vi /.etc/quotaman
sgrg/Kre0          #! /bin/bash51Testing软件测试网P!U4w2s:z
          case $151Testing软件测试网ON2nx+A,{
         start)51Testing软件测试网i5F!GuB%Er7I si
         /sbin/quataon –avug
? {7I[x K Q l p-s0          ;;51Testing软件测试网(JS3J#XZN
        stop)51Testing软件测试网%K0JV8P8_:[1k^e.M
       /sbin/quotaoff –avug
N3Mu)m/v#Q M0}0        ;;
*rB\"\v5Mqxr0       restart)
6_yyk![MId+Z0       /sbin/quota off –avug51Testing软件测试网 ni$vC:k}
       /sbin/quotaon  -avug
{Vy(~1E8x\#vq0       ;;
)K{P~/]cg~ |0    *)
xk\7dU Ue_b4l0     echo “enter start/stop/restart”
#m(l(pP\,E[0   ;;
f0`.d#b5Ay d0   esac
TVI8A` k0Select
0c1M.U7d)`0功能:多路选择分支51Testing软件测试网b6t1E,P n^,w
格式:select 参数 in 字符串
zq;GKh(p.z0       do
)b6O#Jk$p!kiU3K0         case 参数 in
z \VU*VB0        值1)
$eCRAe}{0         语句一
{pN_3[x(n yB`0           ;;
!^+d-|KV0         …….51Testing软件测试网._rj wM v-N}
         *)
Z f.GY/v(vr8}-X0U0         esac
'hY&s I!uc;b0_6j0q0          done51Testing软件测试网b%pU0^V9V"WxDy7s
实例: WORD =”abc”
Gs$q[3USz#R0    Select  I  in  $WORD51Testing软件测试网+n&cKrM(u#v#S
      Do  51Testing软件测试网~ }0K:j|MiW
      Case $ I  in51Testing软件测试网sX o i(V*r7p
      a)51Testing软件测试网!r!k3o:n,O!f ~o
      echo “I am A”
&a4~ S'nXO0       ;;51Testing软件测试网N7Jd;U*V;K
      b)51Testing软件测试网6kE"[n/sC A ~1x:t
      echo ”I am B”
gc.???R']$c5Q0       ;;
'{3K#Q/{m:}Bm;@0      c)51Testing软件测试网F3K%}Jq8},T"^Y
      echo “I am C”
UQ6{*E x'f,o mA,J0      ;;
w+^%ju"a @,u0      esac51Testing软件测试网 hTz@L3d)eu5\4|
     done
;J$}:s*`(N;]-b0cq0for51Testing软件测试网+TZjv-AH+rpT
    功能:循环执行多条语句
zzJ S7r!M&QW A'_0    格式:for 参数〔in 字符串〕;do51Testing软件测试网G,]#T3X3X:nc V&@
          循环体51Testing软件测试网%d2i7h3b([4l{v
           done
6g)v$BK!L Y!o _0     实例:1) for I in /bin/*
DA:_(lhv"jb0                do  
3VOp n8wq'@2|0                echo $i
C,G@H2J Tl:x0                done
%U_U9mU02)for i51Testing软件测试网/vkV._!`cUrXh
do
1E(JM NZ0echo $i
9XDU;`4{_n)S0done51Testing软件测试网+{UBI Mfzg/{
while
F0b)jbt `cV(U0功能:实现条件循环51Testing软件测试网PRqK,}N:l
格式:
2{Yu2G/I_ w0while〔条件〕51Testing软件测试网9?3je'^xHGe
do51Testing软件测试网wZ JY)B ?
循环体
3s^~:Z*L j/x)y?^'B0done51Testing软件测试网l_](`i*kJ8O
实例:1)
I!L1dJ e0?"W{0while51Testing软件测试网/r0d;_w(nI
do
`*vW(G@h0steep s51Testing软件测试网)I.E q-q,FZ
done
)n0|;i5d M7{^02)51Testing软件测试网X6k a zMO+[
while [-f /var/run/pope.pid]
5lF"E[:a0n a0do
Iwy0kAlJF#Ef"A'Z0kill all pope [kill –q cat/var/run/pope.pid]
C J atR%k#f6t+c0done
*B;Q4H-Y$Ms0T0函数51Testing软件测试网2tRo.v1mE;}
格式:
\*`R U)R!U0〔function〕函数名(参数)
#d$bG&j$}*UA]/q n0
(AEX"H5`f n*^-q q0函数体51Testing软件测试网i(z2wJr6V
51Testing软件测试网@EoE`
实例:51Testing软件测试网yRK;tyM5}
#  /bin/bash51Testing软件测试网:nTw3ki#C'K
start()51Testing软件测试网]%SwtRRu2RJ
{  if  [ -x  /sbin/quotaon ]
W$c8F0@at0  then51Testing软件测试网~M9c| g
/sbin/quotaon –avug51Testing软件测试网'_2u&xx6B#nZL
fi51Testing软件测试网"r&v*f%Gn
}51Testing软件测试网Nwz9K3I Rb6h
stop ()
-{N AM cy:l0{
7E_O X;|i0if  [ -x /sbin/quotaoff ]51Testing软件测试网.e$XY-A?J k1i;P
then51Testing软件测试网%z.m'Z{)f*@Ca3H ^
/sbin/quotaoff  –avug
-G&W7zjg4yJ2s&|0fi51Testing软件测试网'Hx)QD,^StJ
}51Testing软件测试网 Pq co5IN
restart()
{2V7cY j.N\5E0{51Testing软件测试网]Sj md
stop51Testing软件测试网"~6Qiem{
start
7z yc(X2~@D0}51Testing软件测试网 h D"lNN5GXg
case $1 in
zAc(y7n6am(G&iA0start)
pH;V^|0G7M,G0start51Testing软件测试网*G+ROub*~
;;51Testing软件测试网n ~`S$}3@k1w
stop)51Testing软件测试网s8tt&gw-\R%T_"_
stop51Testing软件测试网 F*hx.dR6{7Z zA
;;
*I+t;v+ba&W9u0retart)
8pE6j7y+T0restart51Testing软件测试网,y)h ` s*v?j
;;
H1w&[ GS%O0*)
7a)C `4Yn,AN0echo “error!!!!!!!”51Testing软件测试网X1C!p7LoT-\2^
;;
*j/` GZ4I'FKB0esac
$u)mldv-qU0exit51Testing软件测试网5QPV `(n%V,k
功能:退出脚本文件51Testing软件测试网zA}6tuCy
格式:exit (0或1)51Testing软件测试网:^^3] i!U'xZ6W%s
实例:51Testing软件测试网6p,H@q?-A M8HHL
if  [ -f  /etc/sysconfig/network ]51Testing软件测试网/H f n5lyCd X
then
4sw7WF3E0/etc/rcd/init.d/network  start
)jS"o2uW\;qO,Mc0else
)G qPS'D]x(J0exit(1)
iRM!U1c%Zi0fi51Testing软件测试网-u0] yl zCnHam
break51Testing软件测试网VQ0E0Lq$N)dYA
功能:退出循环
9CKAuI'b;D0格式:break
6A{0b3~lso0实例:51Testing软件测试网,JkvC%l7DyV]
while [ 1<2 ]
*uI P"U-uU(W,r1wD0do51Testing软件测试网?#\I;OM6JEN eW
/bin/rm  –f   /abc/*f
+^!?-y"Xk0if  [  -f  name.conf ]51Testing软件测试网sy!_8?I"}w/H
then51Testing软件测试网Z,q"|*Z,`b:_:?;~P
break
3X.L's6QO0fi
Dv'R/K Z0done
5b'X(B{`7iD$|:J0read51Testing软件测试网mC^;_:W^G
功能:从键盘获取变量的值
n.{ O;f B"g'o.S0格式:read 变量名
&?#e!s-a|y0实例:
'_&V0Vi4^9T0read a
C:W0^+Z*t0i4N4t0read b51Testing软件测试网A@}W\G
c=$a+$b51Testing软件测试网5V@([/n.C1]G
echo $c
q2~n!QG+D0脚本的运行方式
3IUNO;kL5{8~0方式一:51Testing软件测试网R g F8Wv:o7F@R&F8@
1.改变脚本文件的属性,让用户具有执行权51Testing软件测试网2GK cbO"q;M Z
#chmod 权限值 脚本文件51Testing软件测试网 ?H&\C0]ZM W2}.C
2.运行脚本文件
$VEA/M*{3G\h0#路径/文件名  [参数]51Testing软件测试网2F(r?2M(j9Yfk k
实例:# /etc/rc.d/init.d/dhcpd  restart
|Fx6W${$nt0方式二:51Testing软件测试网d!`!KJ/t h
# Shell名称  文件名51Testing软件测试网,}N2] Os'C*`5nS
实例:#bash  a

?sTS0S d$?0

TAG:

 

评分:0

我来说两句

Open Toolbar