Linux脚本学习笔记
上一篇 /
下一篇 2006-09-30 21:57:07 / 天气: 晴朗
/ 心情: 高兴
/ 个人分类:Linux
用
Linux将近一年了,一直没有学习如何编写BASH脚本,准备十一看一下。今天稍微看了一下,做一下笔记。
4t9Iva!e_m{0天空博客Q l;v@}0[ `变量:
天空博客Kx.uEm+m5bVt 用$+“变量名"表示。例:$name
j.d_u E&_0引号:
%MaM*\G0 ""双引号,双引号里面如果包含变量,不会求值,例如:echo "$name" 输出是$name
Y#xfn8_0 ''单引号,单引号里面如果包含变量会求值,例如:name="JanusLe" echo '$name'则输出JanusLe
D.Zf'H`-XS5s0 ``反引号,反引号内可包含命令,运行时候会先求反引号内的命令的结果,比如: cmd=`ls` 则可能输出a.c b.c(结果和运行ls命令一样)
天空博客P3RO7U!g3Y \斜杠 ,有些字符可能是BASH的关键字,不能直接输出,要用的话加\。比如要输出句号可以这样\. 当然也可以用单引号或者双引号包含。也可以达到效果
``x/I:B:V8tJ
X!M6M0b$YSUU9}Wd0参数
sHKsWd0 脚本可以接受输入参数。类似于C,第一的参数是$1,依此类推。$#表示参数书目 , s*,s@可以存放所有参数
]q_P)cBe:M0 Nw1`],C Y0导出变量
u.CaJtSQU
bI0 如果有两个脚本a和b,b要用a中的变量,需要将a种的变量导出才可以用,具体方法是export 变量名
9g2|/heu M0天空博客/~2|6V.k eW\+gl,wHlet 命令
天空博客M]7X!u-tI 如果需要命令进行运算可以使用let 比如 let a=1+3 则a的值将为4
天空博客 gcE
Md]!w$pz也可以用双括号达到相同效果((a=1+3))
天空博客D#t/i4sF va2w
vLbs;H j&R8b0test 命令
5j\6D
Ec6J0 用于测试表达式,格式:
天空博客1G8UO,f!G)k test value -option value
/mts?{.@0 比如 test 3 -eq 4 //比较3是否等于4
天空博客L,t(~ G)e;x 可以用两个方括号相同效果。[ 3 -eq 4 ]//括号左右一定要有空格
天空博客7lM1v
D6d R天空博客{M
p#^Hx注:可以通过输出$?来判断上一句指令是否成功运行。0为成功运行,其他值为运行失败天空博客!S,_6kgzzd)]])b0v mhX|c|\G1|4L0条件判断天空博客A ? e#C8z\Yif 条件
"N,ch#d:W0then
2z-Yg5H!Cw0命令
天空博客'sO\2w^cY2welse
'~sh!B(I+VI0命令
天空博客uXE
x&]"[
wZ&delif 条件
天空博客aNz[ xe
C E命令
天空博客)^;VZDWafi
.GV]
XK{z4u0天空博客7d9RW1@k#K9Scase string in
天空博客w6v!n*k%D+b _rpattern)
天空博客K,ZKF2bOK命令
,YiU`
lN0;;
天空博客4Y/YSF
N%~pattern)
天空博客2HfE.Jf命令
天空博客)gd;v:|fL:V;;
天空博客:MP*Z;D+D8J){*)
Sb(E]5e!~'[0默认命令;;
天空博客Nk4k2SQU
|esac
6Wc@W?9C!s^0天空博客9_.Wrb$z#x0G)E注:pattern可以用正则表达式
#f
Ukqu(x/WF
u0可以使用&&或者||进行与,或运算。
)A'|-@2g
Y$Z:uc0天空博客4[({{TA
循环
YKpTsd5Ked0while 条件
_]Z} Q'zP&ZG _P0do
)v0uh'T}W0command
].[:~%Q-m0L0done
"B-_8\.M;h B2Q0天空博客7e3a(U3|Px;Suntil 条件 do
4m'^k2o^4i$NS0command
天空博客vi'O%WxZW1udone
天空博客*E `yD*|6D//条件不符合,循环
:x
oD!C BT1Z|k0v${SKL2nO0for var in lit-value
天空博客gy Q(o.~
K@5i,G}5C[do
w0n s.St^.sE&b8w0command
天空博客j/q6_Ak/v!Mc"~done
天空博客RK(]kZ5Gr&y)a例:for var in *.c
天空博客1zdX;H0Ado
天空博客s;\!R
k8Oxewecho $var
天空博客_C3_-h!ALsc2K)N Zdone
天空博客 V'_$es8d~//显示所有c源码文件
天空博客3r P~$Z.W天空博客IT%MYfJ3ffor var
天空博客cbIY#xc Tdo
天空博客agu"a3@'WI,kcommand
天空博客8`!z,M dU3hR`6hdone
~!L(YWgL1P_(]wN0//这里var的值列表来在输入参数
天空博客Ml(`h]M;r8JV3t4z例:
天空博客0M$E0MyQo1a1_////////////
天空博客,BB&]1BciXf#!/bin/bash
天空博客+ER6t%vg,i#while.sh脚本
%t4S q~h }0for var
2}sU3qAX{2E1gU!P0do
天空博客
Dt{+v+E9}Yzecho $var
天空博客
{N!ic
L%m5xkdone
天空博客{8L0X%\
{EE////////////
天空博客_'fo!Bv+uVREy"c5n天空博客.K} s%o?$./while.sh a b c
天空博客l,]BG
Ga
YejF W1G0b
U {8c9^Ce0c
天空博客.E|w;r5}.K%i%Hu#Vh天空博客"\V X5cE ptrue false break continue
A@Y1m(y^0'KGMt2B8i8U0.`%V'R.T(]s1XB2A(G0在控制结构中使用重定向和管道
]1[j:Ug/m:t0天空博客
h ?%x"_{P可以重定向控制结构的输入输出
Z6ptT+p&I`XDm0//重定向输出
天空博客1]'q5Wu o(htest="milk cookies apples cheese"
Am;W;S&c0for i in $test
m^|
Uv0do
Lz0Z!P'j
r\0 echo $i
S
ab*X*s v{0done > foods
天空博客6Y3QV;|
QB gO天空博客7t*?hR'tD9s
b ry//重定向输入
天空博客Q3l?7b1L
{Y_
C3E0P*ewhile read i
I%A#b2o.W0do
天空博客[;C$HoA$Q)RN echo i
天空博客]w:Nq(Ip
h*G$zdone < foods
天空博客?7gf9{,Oy6w5W天空博客9GpZ}EX&y天空博客QfJ6P0{trap(捕获指令)
'~"uj(},h8A1_0trap 命令 信号
K)}1T9c6B2T+PyB0t0例:trap "echo GoodBye" 2 //捕获Ctrl + C
bR~q:@ Oo03h,}fJT3zN8P3j\0常用信号
)c!Z+|WX.~00 程序终止
^O0I\k7m-D'`01 挂断控制终端
天空博客)LoKo-gJY2 按下Ctrl+C
天空博客8Z](jrqJU3 按下Ctrl+l
天空博客#Zu
p6Pe9 杀死一个进程(这个不能trap)
3c*W Lk6kmgl3k015 利用kill命令终止程序
$D K-cG/n\`N#]024 按下Ctrl+Z(这个不能trap)
^-_NvATK0天空博客J j@H3k天空博客5O1wMg XJ(完)
天空博客,H_X3c+D"?8`9qe以后在陆续阅读一些脚本增加编写脚本能力。脚本编写这一课我算是补上了。
`c9MT5E!u0%`,N3UD+k`(Ax0PS:因为是写给自己看的,所以写的有些乱,呵呵。
?u"U)zg6T I0
导入论坛
引用链接
收藏
分享给好友
管理
举报
TAG:
Linux
linux