Linux脚本学习笔记
上一篇 /
下一篇 2006-09-30 21:57:07 / 天气: 晴朗
/ 心情: 高兴
/ 个人分类:Linux
用
Linux将近一年了,一直没有学习如何编写BASH脚本,准备十一看一下。今天稍微看了一下,做一下笔记。
天空博客Q2CF8d(En RaVa\oZjE$ND0^0变量:
&Ve5u*^d0F0Vm0 用$+“变量名"表示。例:$name
天空博客U lIEvV#r&O引号:
天空博客L4H|vt#lT6I ""双引号,双引号里面如果包含变量,不会求值,例如:echo "$name" 输出是$name
q2[3hpw-jd#F0 ''单引号,单引号里面如果包含变量会求值,例如:name="JanusLe" echo '$name'则输出JanusLe
Oc2eAy-e1[!G-c'h0 ``反引号,反引号内可包含命令,运行时候会先求反引号内的命令的结果,比如: cmd=`ls` 则可能输出a.c b.c(结果和运行ls命令一样)
8U6B0B,K ~D$Hx0 \斜杠 ,有些字符可能是BASH的关键字,不能直接输出,要用的话加\。比如要输出句号可以这样\. 当然也可以用单引号或者双引号包含。也可以达到效果
!pbd@%e9~ w0天空博客YO jA;R\0`|m参数
天空博客4z/?Fi%O+N 脚本可以接受输入参数。类似于C,第一的参数是$1,依此类推。$#表示参数书目 , s*,s@可以存放所有参数
"y.y
{`%ew]y2u0 ,I8WKp:m\%c1NJ4n*m0导出变量
天空博客Y
u
Y"`pp'M*v~ 如果有两个脚本a和b,b要用a中的变量,需要将a种的变量导出才可以用,具体方法是export 变量名
天空博客%K0Op3t4R6]0E:g.tT
y/? cwV0let 命令
天空博客9D}y^D(w2B 如果需要命令进行运算可以使用let 比如 let a=1+3 则a的值将为4
天空博客!irN\o%j;g也可以用双括号达到相同效果((a=1+3))
:raWADk0c ^H/F9@0u
\SZu0test 命令
i~(r Asv4ki~"e0 用于测试表达式,格式:
B|"j t&]|l2f0 test value -option value
天空博客tJA9vU.u 比如 test 3 -eq 4 //比较3是否等于4
天空博客cV
B!wIYL 可以用两个方括号相同效果。[ 3 -eq 4 ]//括号左右一定要有空格
eYa%Cy P+b4Alz0天空博客%O:w2B~:ny^?注:可以通过输出$?来判断上一句指令是否成功运行。0为成功运行,其他值为运行失败天空博客
|0T#sY"F[.e0n6F#b天空博客1h Q1C
c
`2x2[条件判断天空博客SYoNA0z4mif 条件
天空博客 N^$S[9POLrthen
{KKx"y@ke0命令
2ZwL I$?5{(AbE0else
天空博客8KW5culT
Ob[
o命令
E \e1e-QrB'_0elif 条件
`uU$_1lHh0命令
Eb
[%r6| o~0fi
6G|^ S$vyu0天空博客J-{P&j|Q.l.ucase string in
e"n$Y8q4n0pattern)
天空博客2bK3o#qiG命令
天空博客Jq4@:Zs9Z
J Jx-y;;
天空博客O1aS6^/^&v:bHhupattern)
天空博客)eS)j)oE)Y7z命令
9G:e/ZH*@1Z0;;
/j.pN1Y4l oP0pQd0*)
天空博客YC9Y
~2ub {0d2R_默认命令;;
#kZb&c&`+J!t0esac
天空博客r?LcFm7N/]4M^ yd_h0注:pattern可以用正则表达式
8h~*e wXg0可以使用&&或者||进行与,或运算。天空博客wAn$wyB)k
/JbVJ I*O2v;F0循环
{u*T2w&KcR J,J-ad0while 条件
r-l2dG
{4pg ra/h0do
天空博客K|1?~hn I,{Uocommand
天空博客
C I
d#G9d Y
~V,Qdone
天空博客nsh1^5@+H天空博客P0R+\aY^Puntil 条件 do
天空博客IB
Y3jIcommand
gSF_r0done
7d%Xv'q{+ON7b@0//条件不符合,循环
9t+EN)x:k,Owv.T0天空博客+W7sc*Y!q3HZfor var in lit-value
?"] Lc oo p%|0do
天空博客pD
M2G4SL+Jcommand
"if)ARW.l4Bk0done
天空博客spn1C3A例:for var in *.c
#[2@q3X1\0do
R;F-o\7jg t9x:E0echo $var
M:Q]9V1^0done
天空博客+vV4CFA
y//显示所有c源码文件
天空博客d MgW4M:Vm7wV6GS]W0for var
Yva7A
tj%fB
B%J0do
天空博客 w:V/}U/mW gcommand
天空博客
D'?h|,p w$Ndone
y-v\&t-TL0I C:_#?8}0//这里var的值列表来在输入参数
Y|q+S`(V0例:
天空博客*k(I5zC.U!u#f////////////
#X] _?1t[$l,L0#!/bin/bash
IEG']6O0#while.sh脚本
天空博客%Z5_/z!x(t&s6j2GXfor var
天空博客;^5o,j(WG4H
tdo
7q/[TMM#S O@0echo $var
天空博客t#ol\;fdone
ZM2e'L7}iutK8z0////////////
天空博客F3Yt;PqYbG天空博客,Q(CCY8f}C$./while.sh a b c
tUPrNV0a
天空博客\nW1['tOvb
!eQa |b A,O0c
^rjl'y(RV c7k2L0天空博客%[:?s F
nbtrue false break continue
3Od^_}&Ic'_uC+L0{N^De |_0@pxz2L&T
{'t1_a0在控制结构中使用重定向和管道
天空博客.v/]WM(t%W7ePz2r+h7S0可以重定向控制结构的输入输出天空博客LP%M9~U
U1L}
//重定向输出
天空博客/jEW*Pvatest="milk cookies apples cheese"
天空博客(Y/?:a$BMs2s^*` Uy!_for i in $test
k YUj'OY0do
天空博客U`$zk
k kQA;^ echo $i
天空博客"Mg.r+ww$Fh!VhNdone > foods
天空博客$L }t,h3@Y|:@%F5s/Is7XWr0//重定向输入
天空博客A){(A4k%Cg^Vf0gwhile read i
天空博客1C_:ECf"cgI^do
天空博客+?/xOz'@,`s
l echo i
2i7i4c$J%HFJ0done < foods
天空博客jb+_;n6m$O?6ZX天空博客o[ @dotQ*a:}天空博客7^{J]^&Rtrap(捕获指令)
o;Th5@Z
E:Oi(_$ar0trap 命令 信号
天空博客!D)apl"DU*jF.D例:trap "echo GoodBye" 2 //捕获Ctrl + C
})X$vm l2c0天空博客XMk/aoz{常用信号
天空博客+B-F!ZL+m0 程序终止
m5V.c(^Ww*r:j;a01 挂断控制终端
|/Ak'z*tz02 按下Ctrl+C
天空博客7Tqry#C'o6WO3 按下Ctrl+l
:E,p5tPIZj09 杀死一个进程(这个不能trap)
天空博客"p%UBOe15 利用kill命令终止程序
天空博客*y ob&v*o dh24 按下Ctrl+Z(这个不能trap)
8O4~kUTA0]Ct&G'o0天空博客F1w||z%]"ka\+Vx(完)
/_hdU.n0以后在陆续阅读一些脚本增加编写脚本能力。脚本编写这一课我算是补上了。
'AI%Y4mw0天空博客%Ez(h'`Fc
g7f(yPS:因为是写给自己看的,所以写的有些乱,呵呵。
天空博客4}W kl3w*x.@k+A
导入论坛
引用链接
收藏
分享给好友
管理
举报
TAG:
Linux
linux