Linux脚本学习笔记
上一篇 /
下一篇 2006-09-30 21:57:07 / 天气: 晴朗
/ 心情: 高兴
/ 个人分类:Linux
用
Linux将近一年了,一直没有学习如何编写BASH脚本,准备十一看一下。今天稍微看了一下,做一下笔记。
,A?@*yUAk0天空博客g9`*i$kg1~*Lz)tY5w变量:
)Y!w%gBT"\0 用$+“变量名"表示。例:$name
天空博客f5B:_|g)@(A1P引号:
.}d&q!p1qu
[0 ""双引号,双引号里面如果包含变量,不会求值,例如:echo "$name" 输出是$name
7F![6i#m;D K2K0 ''单引号,单引号里面如果包含变量会求值,例如:name="JanusLe" echo '$name'则输出JanusLe
天空博客B1B}A
p7np ``反引号,反引号内可包含命令,运行时候会先求反引号内的命令的结果,比如: cmd=`ls` 则可能输出a.c b.c(结果和运行ls命令一样)
R].\+~er3jcQ0 \斜杠 ,有些字符可能是BASH的关键字,不能直接输出,要用的话加\。比如要输出句号可以这样\. 当然也可以用单引号或者双引号包含。也可以达到效果
天空博客'y'W1h:s/xp#\b天空博客8mGw{| mz
~参数
天空博客.QEt[-C,@|Q}r 脚本可以接受输入参数。类似于C,第一的参数是$1,依此类推。$#表示参数书目 , s*,s@可以存放所有参数
nY-Ym)p0 天空博客#@eB1v4e}导出变量
天空博客*~u+G;s2o"t v^ 如果有两个脚本a和b,b要用a中的变量,需要将a种的变量导出才可以用,具体方法是export 变量名
0A%u FUnq02JZ6eT Q3s;m+y0let 命令
天空博客kVc2v*Z!wX` 如果需要命令进行运算可以使用let 比如 let a=1+3 则a的值将为4
]'AeRjP0也可以用双括号达到相同效果((a=1+3))
mz+?'QD-P0[_(G*n6[+[
q
|'Xg0test 命令
vG1`D6K
f~p m0 用于测试表达式,格式:
天空博客g
Y+j%Xx)?3WQ9Z*^&h test value -option value
天空博客2~BfiW \'kl 比如 test 3 -eq 4 //比较3是否等于4
天空博客:x QrP"S3Ms3aS%I 可以用两个方括号相同效果。[ 3 -eq 4 ]//括号左右一定要有空格
天空博客~2D6Z!vtVz天空博客0Za6fh2c注:可以通过输出$?来判断上一句指令是否成功运行。0为成功运行,其他值为运行失败天空博客:H.X\l"MyB天空博客/q6_Ws"Q+T)P条件判断天空博客!A z
V%nSW$I(P_if 条件
天空博客i6N&J%ErEyS~then
"Q3p8u nxSaB0命令
d!t
er
k,?6Pr0else
天空博客3]*} UsC e RX命令
天空博客L"A-G%T DJ,]!CvGelif 条件
天空博客M.L8JZu%n$KiA!^命令
天空博客 SvjF|3O'dfi
}\S)v3C*|*^@.KP0^7U4B NUGJ:gP
r \0case string in
ii
R/yh#D-o7oS'W0pattern)
|,y;{0{e,Q3d0命令
天空博客-b:N9fD:`-[
_'Q;;
$} s:eX#b&pX0pattern)
*j
yRw x0命令
天空博客ar@Ap;;
-kBR$Pm\a$d?0*)
天空博客?0Q;v|2X2aM.\默认命令;;
天空博客)M8C0p"n6eFw0bkesac
天空博客8B2`/vtj;l(V+o天空博客ol7k"?i"y S.l注:pattern可以用正则表达式
3}iZtK3k0可以使用&&或者||进行与,或运算。天空博客
I4re`6v2S
S2c I+P%o"|0循环
?*|Y6y#k0while 条件
(E j{$rLu0do
7b{#h"_;]5p0command
天空博客Nhs`]_ u\+L]done
天空博客/^8Ts,Q(HX#a`*cS#jF l0until 条件 do
J)Qk"J ~O&Ju0command
天空博客yv0Uh,lQ'dde@done
天空博客
JROj,cl//条件不符合,循环
天空博客6fCv!l)k{$WC天空博客{7Q/i9MR;{nL2Cfor var in lit-value
\9O7d.R&q5W_jN0do
天空博客b P)U#J5I^ Scommand
天空博客$AU(o?:kdone
天空博客4Yty0A/y#Ww~(z例:for var in *.c
天空博客)cZ!gU(Cq2Rdo
X/v xs(j0echo $var
天空博客b7f,{ b7mdone
天空博客5\]/i4C^$U//显示所有c源码文件
天空博客4NvV6l@+K9Dd1H天空博客Gw)K)CKcJ:jfor var
IFP0x4a ku0do
天空博客}"VZ$lC0J G-CGcommand
C
M]z1h0done
Wd:f4bj b0//这里var的值列表来在输入参数
+nd7v&k^+Bw/\0例:
天空博客,iA"Y~|:F]Kp?X(Q////////////
天空博客l-s;YI["w#Mk#!/bin/bash
5g9e0`;|,RhP4D q0#while.sh脚本
5em
sy E#kg0L:KP0for var
(X)f/o;~a+jIb x0do
天空博客'~K6oginHecho $var
xz:r#EU'^M0done
天空博客9a'o#l[.m'v!a2t////////////
天空博客;M0{_D3X@a天空博客LA}1n{b$./while.sh a b c
b U,M1uE9b"w2I0a
天空博客!}9@\.^Trb
天空博客QczV?H`&Sc
9t R:i!?'\nS0天空博客g"K w9c9e/Ctrue false break continue
K8HJ\)j:MOk.K0天空博客snGH8yGx1qFpK/f9Z0在控制结构中使用重定向和管道
天空博客$Ge
T F/t*@o2x'] ]aW;d?t0可以重定向控制结构的输入输出
-Q}|3VA0|x!`6Gl0//重定向输出
&^yE GL3F0test="milk cookies apples cheese"
3e {t9LYxN*^0for i in $test
1Pxz6]^&T&Q0do
天空博客
M]o1Hn echo $i
*{l)bP&PN E$a0done > foods
$a/YI4_-C(bR@+x0天空博客G'IdA)K` Fh-P5L//重定向输入
天空博客B$G2m{ f%D(qwhile read i
天空博客(|A,mpX.OFdo
'{
~I d)}(sE%@0 echo i
:gG3rKW,?T2@0done < foods
天空博客F
?
f{7C3a {^天空博客 |-E4y5i^
Oc]天空博客`_Q@ktrap(捕获指令)
]N9Qu"i6|q0trap 命令 信号
天空博客4X/gRn:` ~3Q例:trap "echo GoodBye" 2 //捕获Ctrl + C
9K6SD,o+I:XCD0K)H)G%I S_~Q.b0常用信号
天空博客^\$B1?y*CM0 程序终止
天空博客%Ih\
L0~1 挂断控制终端
天空博客%qh5q$N+M3T"z"t&Q7L2 按下Ctrl+C
天空博客Z)u!@OB+G`3A3 按下Ctrl+l
iW'{j;b&N09 杀死一个进程(这个不能trap)
:SuXC3IU!D3V015 利用kill命令终止程序
天空博客VJ~SB3[`&jT[24 按下Ctrl+Z(这个不能trap)
天空博客([)D]|d}q8Rv4`.K
h d.V)?0/{9HOP&}6yK0(完)
l+B,X K3?0以后在陆续阅读一些脚本增加编写脚本能力。脚本编写这一课我算是补上了。
3`wn,U9o1s9d#f0:b@Chr(?0PS:因为是写给自己看的,所以写的有些乱,呵呵。
+]tHR6@0
导入论坛
引用链接
收藏
分享给好友
管理
举报
TAG:
Linux
linux