Shell编程

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

  • 文件版本: V1.0
  • 开发商: 本站原创
  • 文件来源: 本地
  • 界面语言: 简体中文
  • 授权方式: 免费
  • 运行平台: Win9X/Win2000/WinXP

p8W*d%i4c Sk0教学内容:51Testing软件测试网e["RWHy~
Shell的基本概念51Testing软件测试网'Wc$w*aTi U(Z;D-~
Shell编程基础51Testing软件测试网8A2Qt%YH J E @
Shell编程的语句51Testing软件测试网l7].bL M8Im'LT'bX"|
Shell脚本的运行
LzS`EPOb4Fw%f0教学目标:51Testing软件测试网oL ?"iZ S9p
了解shell的基本概念51Testing软件测试网 wB(T ?1JFo T
熟悉shell的变量
F3K'of`D:w:g0掌握shell编程的常用语句和shell脚本的运行51Testing软件测试网#X0S5r1~l
教学重点:
jf"UoD&H0shell编程的常用语句
;h}.`'n@$?0shell脚本的运行
y:Nd#_[0b0教学难点:51Testing软件测试网3T s[&n9v6b6R z
shell功能的实现51Testing软件测试网u S\v7S"o*l/P'{,@
Shell的基本概念51Testing软件测试网uG)B\ r5x5l
Linux shell的特点
R:BB j)K-DS0便于开发新命令51Testing软件测试网DRGZF(ci_
提高开发处理
"c$v6qw1D4V w0内置编程语言51Testing软件测试网,a'A4R k6U_
提供后台处理机制51Testing软件测试网E%zF{LaZlIv
提供管道、命令替换、自动补齐机制
0uuV5B9b+H!?D A0Linux shell的版本
i|UL)G#ul(W!ZN0Bourne shell(B shell):Unix的最初Shell,在Shell编程方面比较优秀。
#`Jk1q3P0C  Shell(csh):在C语言编程方面性能较好
Ye{M5s&it,r0Bash Shell(bash):Bourne Shell的增强版,Linux系统的默认Shell51Testing软件测试网d9y(h"gnt9@
Korn Shell(ksh):综合B Shell和C Shell 的特点于一身。51Testing软件测试网*YZu3Am4Q r(F0@
Tcsh:C Shell的增强版,具有命令行编程接口和历史记录功能
6q8Y"P!G!K:B,[+}0命令的解释过程51Testing软件测试网9v;K j5T4Y'l1O:g

注:(1)设定命令的别名:51Testing软件测试网KpL2{*]-f
格式:Alias 命令名=‘原命令名’51Testing软件测试网.a.v~Ns+O8c]
实例:Alias md=’mkdir’
IT8t](?+B6C4_:HF0(2)更改提示符:
'H%Kvwh0格式:PS1=字符串(一级提示符)
C.aQSyzxY/\[0PS2=字符串(二级提示符)〕
Qr@Y}#D7F5F6`0Shell编程基础(Base Shell)51Testing软件测试网cv O5Yp%^
Shell的变量和参数
#^-n@T{D0(1)变量的分类51Testing软件测试网+W.`0a s:WB@QLH
按变量作用域来分:全局变量,局部变量51Testing软件测试网;NOUkp S/m@^
按用途划分:系统变量环境,位置参数,用户自定变量51Testing软件测试网a@T g*S y:l t
按数据类型:字符串变量,数值变量51Testing软件测试网 a$y*|e ] YiS'C
(2)变量的定义
!K t7j/~~JLo0MyHost=”www”51Testing软件测试网 p)O`7^xie9^
(Export全局变量:Local局部变量)
[fmE Tu,Tr0环境变量51Testing软件测试网J sR$jx|
HISTFILE:历史记录文件
\x6y#Hh(x|0HISTSIZE:历史记录列表的大小
0HZGkZ R{7V0Home:用户主目录
u'j5r6Y3fI$P0Path:通用路径
!R ~Uu/Npwm0UID:用户的UID51Testing软件测试网W&Y ~HEP~
PS1(PS2):一(二)级提示符51Testing软件测试网,eyEL\
TERM:终端类型51Testing软件测试网?H2[9oq gE
位置参数51Testing软件测试网_w`W"W&a2Zu G
位置参数:$1-$951Testing软件测试网 d^'@|6JmP
特殊参数:$0 命令名51Testing软件测试网Cm tQP`X
          $# 参数的个数51Testing软件测试网0q.o*XH ]9{ J
          $* 所有的参数
.HE0D,CF.BhLuDKk~0          $$命令的PID
R3?`1|2@0实例:#Vi    /sys
`,~0s.Onc0    #!/bin/bash   (指定默认Shell)
.G*u*w3\)E+R&xA0    System=”RedHat Linux”51Testing软件测试网U)I5C/s*hc!k!E }NF
    Ech$151Testing软件测试网w U0] k} h%I
    Ech$251Testing软件测试网|j?JDt.Z
    Ech$System51Testing软件测试网U _:Sl8^g
    #chmod 755 /sys
'\Ej2Qmk Z0    # /sys  you  need
.Q4i1Cz2pB\di(Z0    you need RedHat Linux
#Bp1JZL$i"d\0运算符
^tA,d.^8z0  算术运算符:+,-,*,/,>>,<<
7p ]~N2H0  逻辑运算符:&&(与),||(或),!(非)
*B+oiqJL,_0  比较运算符:=(-eq),>(-gt),<(-lt),!=(-ne),<=(-le),>=(-ge)51Testing软件测试网;X)WH {b+_w
  操作符:-x (判断可执行文件是否存在)
.]7o Le$tQ0              -f(判断普通文件是否存在)
mOgggz;O^L*N0              -r(判断只读文件)51Testing软件测试网$J&GM SH$Ns@
              -w(判断可写文件)
p1O0u C:I'E/\+c0              -s数字(判断文件大小)
(DO*Xp:iS*W w0Shell的常用语句
"t jZK-A;U1|v y0Test51Testing软件测试网Kxd @z:T `5fS
功能:测试表达试的真假51Testing软件测试网9f8jfv.tS2l"ql
格式:Test 表达式
0J|U l:a4uS0实例:if  test 1>251Testing软件测试网z%m\)o4Z"M
then
/I p(d4lA7oA9Y0echo “1>2”
7d@/I7k:L%f3Vz`m0fi51Testing软件测试网`:U A(@'BqpyF$L
      if  [1>2]  
2]3D3G0Jug~^:b+v0then echo “1>2”51Testing软件测试网 q#R#J2}b$oO$^dL
  fi51Testing软件测试网5t1Ow:rN*O(b:[ P
if
j`(w W Vl0fe#r0功能:条件分支选择
8KperJ2YB0格式:(1)if  条件           (2)  if  条件    51Testing软件测试网~6h7Eak5G.?y
           then                      then51Testing软件测试网U~,d7P~B0AK~"x0} @;u
          语句                       语句51Testing软件测试网:~(X(O{&qu
           fi                        else51Testing软件测试网|ga @H5\}#~
                                    语句251Testing软件测试网`'E JF:v Op
                                      fi
\h#t5um.u@q r0      (3)if  条件               (4)if  条件51Testing软件测试网B2z~lx.WN OL P
         then                        then51Testing软件测试网RKY){W;o\V
        语句1                     语句1
X6R:R1adW0      elif  条件2                   elif  条件251Testing软件测试网 G*|&Yu7b.j!}$S
       语句2                      语句251Testing软件测试网ff,Hsz:}4T*rl
      fi                             、、、51Testing软件测试网0QX0Ti m4A I
                                  else51Testing软件测试网6EE#N:n.\a*]
                                   语句n
d'AGGf0                                    fi
yJ H7Z_7z0I0实例:1) if [-X  /shell/quotaon]51Testing软件测试网 a2R [#HN'l"~
          then51Testing软件测试网lN8iNUp(uZ-]
         /sbin/quotaon –qvug
i C2{ hrcT,X0        else51Testing软件测试网!opE%X#Ak
        echo “quotaon no exists.”
7UJ]4Z f1V0fi
:RGC5`%M iy02)if [-x  /etc/crontab/]51Testing软件测试网:ytyF }kA
    echo “crontab file exists.”
`E9Iy&EVK0    elif  [-x/var/spool/cron/root]51Testing软件测试网Cn4} E6_:[ A
     echo “root’s crontab file exists.”51Testing软件测试网,S6j2sR];t!Y
     fi
hk3{,Tn)e0Case51Testing软件测试网YTh n:y_q K1FF']7I
功能:多路分支51Testing软件测试网gP ]%g#o(b w
格式:Case  参数 In51Testing软件测试网{vV+A,w z
        值1)语句1;;
C^.N'zc'e0        值2) 语句2;;51Testing软件测试网/Y/u#B2V)_$z7s
         、、、、、
:cg%n;N)},vN u0        *)语句N;;51Testing软件测试网7y%t%? wso#M4\
       esac51Testing软件测试网0@2O*GQ$@
实例: #Vi /.etc/quotaman
v P,@'G6j[%s)A0          #! /bin/bash51Testing软件测试网qj$H#g/OW4o
          case $1
kTs*c~N,F0         start)51Testing软件测试网/JM8| ?J
         /sbin/quataon –avug
&Q)O.me"@!i1SF0          ;;
6Sc3l!L [3T0        stop)
$Fj9X@Y6hv;S0       /sbin/quotaoff –avug51Testing软件测试网)azm"?\'l#O"J a7R
        ;;51Testing软件测试网"FRn2L L}Bh'e
       restart)
-YEn%Tt6\1k0       /sbin/quota off –avug
kGL[9apr$n)S7]0       /sbin/quotaon  -avug
5uT+I?.R{#H}/?/y0       ;;
m3?4e:@\0    *)51Testing软件测试网2q(h+x T:V6c:wk5fD
     echo “enter start/stop/restart”
2g.~&RmQ&f/j*N7i$k0   ;;
d#cYg D#D F0   esac
e#F+^ _M0Select51Testing软件测试网 D0W_ o4B5U+@
功能:多路选择分支51Testing软件测试网,pE*fg3Vd#o7p+Fz
格式:select 参数 in 字符串51Testing软件测试网%|8IfZf)^QX&gh
       do
Q;^q+ttB H:N0         case 参数 in
XE:U'Y? D*q0        值1)
L?^a4b? Z)eD b0         语句一
$M(O `?8Q0           ;;51Testing软件测试网2H Jr~K9^/fvB
         …….51Testing软件测试网1H*s[{|G
         *)51Testing软件测试网r? f8ZO:[
         esac51Testing软件测试网~ M#F2B(i:{
          done
"@9Z(I;tqa;H0实例: WORD =”abc”
X!a\-t&gl6RS l R0    Select  I  in  $WORD
^ J*h@/\U9wt0      Do  
\5`%J^(qMA0      Case $ I  in51Testing软件测试网h_/G6A!Sr
      a)
s+Z3u(II2@ k{|0      echo “I am A”
j.A6O~Xp,MW;N1R0       ;;51Testing软件测试网a-u]kKy6{)cC9k'D
      b)51Testing软件测试网z;It(g7X O2^%T.T
      echo ”I am B”51Testing软件测试网%FI~;Bntp3pp%j
       ;;51Testing软件测试网(mr)oRs6x*Z L%g
      c)51Testing软件测试网TW pX8tq;z
      echo “I am C”
D!z8~ PQ-\y4KAu0      ;;51Testing软件测试网5?"B*g+H'}g*J
      esac51Testing软件测试网cl3g0r0pB9V
     done
,\$ug:` gnm0for51Testing软件测试网)w9FflG\h
    功能:循环执行多条语句51Testing软件测试网B MU9Jywc
    格式:for 参数〔in 字符串〕;do
C|%t z X4MX0          循环体
*yL R5R@0           done51Testing软件测试网Xe[ E/V5T/Y
     实例:1) for I in /bin/*51Testing软件测试网A O9o)K8\Ew
                do  51Testing软件测试网HWM}~Z a&{'w
                echo $i
#U4SY Q-x,J0                done
M&o9p Sd f4G02)for i51Testing软件测试网`&W7FT6q|FNu
do
ug\-T5O1`#h*t0echo $i
3^;z;H?ER0done51Testing软件测试网d0K${1Id ]0w
while
-k+~#?tnT0功能:实现条件循环
ED Mgr+p#W0格式:51Testing软件测试网"^b*I&^$Fe D:sA@
while〔条件〕
"k5q"n:bLY;yg1s;L0do51Testing软件测试网N$yB#W2EqO
循环体
:Z8i)BU:VZ [0done
-^"{ ^-|H+U0实例:1)51Testing软件测试网*viSf6a
while
`-@@P:m#eY*C0do51Testing软件测试网6gYY#r$H$K4Om:XD]
steep s
$K,^Hv0t0wa+E0done
.?z+Z8Gf:a"J3n;r02)51Testing软件测试网] K y L;qo E9r
while [-f /var/run/pope.pid]51Testing软件测试网jiD#G(I"k2W
do51Testing软件测试网_XIxTV
kill all pope [kill –q cat/var/run/pope.pid]51Testing软件测试网fLb hD%pb8G
done
xv)bD-J)Q0函数51Testing软件测试网.FX r9IA)d
格式:51Testing软件测试网%fhX|@CU
〔function〕函数名(参数)51Testing软件测试网ip c7|PYf2|c!u%[

8VG6oD_h:[2o+v#_0函数体51Testing软件测试网'l `dw:d

{Jj9]^JGy gq0实例:
+k#?Bc0[)XBm0#  /bin/bash51Testing软件测试网gR:K%}F]'kI id
start()
9g,u` E}&M'x\(h0{  if  [ -x  /sbin/quotaon ]
~U%| e sB-W0  then51Testing软件测试网;QS!T[9|J
/sbin/quotaon –avug
/@l he@UH0fi
'mJ FUk}-T T i mc0}
]"}pF^ENS0stop ()
/N V U%Kk@us0{
i!LpST5dE0if  [ -x /sbin/quotaoff ]
.r R9X]0{b#O0then
{8K+V#OjH0\X0/sbin/quotaoff  –avug
@hm0hj8l? nb0fi51Testing软件测试网ZIpkT8e;S0i6|
}51Testing软件测试网*] z I kPVa
restart()
D#j$H1p_&yGK0{
&Vrm:|%X5[,S0stop
:Fx:a5O%qWZ#t0start
4I"jE_&@a b/|SI6E0}
'G'|)oy9o'[/GTh0case $1 in
Kq5Qaj;F` RU0start)51Testing软件测试网`@#s4]9q,~1E!Z V
start51Testing软件测试网G!|1A mi
;;51Testing软件测试网.L0t!lKOR&EW}#F0KI
stop)
9JP$m&fD^$e0stop
@ OxpU(M5~2t0;;
wu _*q2IA'n["l1R0retart)
oQ!m+S)H)cT0restart51Testing软件测试网e'f]A4l/GC
;;51Testing软件测试网(_3AgS3f7yL;b
*)
5Z1N4R;F)I4N5@!l"DI0echo “error!!!!!!!”51Testing软件测试网s&j6Ea|K7Cp
;;51Testing软件测试网-I|hh"f e&E o
esac51Testing软件测试网yP(},l6|_4LuB
exit51Testing软件测试网8`l5k^/J)XA
功能:退出脚本文件51Testing软件测试网D.l:} yUG&t;mO
格式:exit (0或1)51Testing软件测试网 i#X n6D0x)Gk
实例:
?Qi9k,KrX+@+T0if  [ -f  /etc/sysconfig/network ]
d@ ~0qKx)f0then
/D7C3\4[4e2v0/etc/rcd/init.d/network  start51Testing软件测试网$Bo1Q+L&r6P-L
else
g9L(` sS0exit(1)
Y&x{q[&I3a0K0fi51Testing软件测试网-lcV4U7{1\kl
break51Testing软件测试网/h1z:u:O$Ii
功能:退出循环
?:C\tvV7v3y.}0格式:break
jth?"V }K7X0实例:
O#jBgM cM0while [ 1<2 ]51Testing软件测试网5[$c6ia l`YP:i6B
do
%a{*e-|wx+aG;}0/bin/rm  –f   /abc/*f
.@!C3] p8k7}o0if  [  -f  name.conf ]51Testing软件测试网q4{!e{h w
then
2G%V OO,mM vT0break
L|A"C8p9PI0fi51Testing软件测试网'e'D\%Y:AuR0zSd
done51Testing软件测试网x TF9]&e4T3r
read51Testing软件测试网*{J4y Onra;h
功能:从键盘获取变量的值51Testing软件测试网R!jw$X[ W9s k#E
格式:read 变量名51Testing软件测试网-^{YD&o*k+~V'y
实例:
N m2o&Zv C7} f)yx0read a
x&E [%P0V0K}k0read b51Testing软件测试网F{M-co:pR5I
c=$a+$b
rm,~]2o X0echo $c
jL5B*\K5f5k[g"f,v0脚本的运行方式51Testing软件测试网3t$O~v\fv t1L-f
方式一:51Testing软件测试网/ty$] [zc,v~ v
1.改变脚本文件的属性,让用户具有执行权
j4s;z \5dn,S0#chmod 权限值 脚本文件
X{/ww.lIm2s#T02.运行脚本文件
ttz-`t2{"{0#路径/文件名  [参数]51Testing软件测试网)D{o2y#dRLz
实例:# /etc/rc.d/init.d/dhcpd  restart51Testing软件测试网 x8z&e){0o |Y!P
方式二:51Testing软件测试网 ?x M.`7t1{(\-G5J~%r
# Shell名称  文件名
HK I.u,|WoA5o!g0实例:#bash  a51Testing软件测试网 VoB6f_e p

TAG:

 

评分:0

我来说两句

Open Toolbar