Linux脚本学习笔记
上一篇 / 下一篇 2006-09-30 21:57:07 / 天气: 晴朗 / 心情: 高兴 / 个人分类:Linux
用Linux将近一年了,一直没有学习如何编写BASH脚本,准备十一看一下。今天稍微看了一下,做一下笔记。天空博客!B{#{(U3^3W6} i:S\
0d+fY"_3E%GLN0变量:
o.uz6~)N^d0 用$+“变量名"表示。例:$name天空博客-v1_F+UF+t)K
引号:天空博客&b|;?~f]rD
""双引号,双引号里面如果包含变量,不会求值,例如:echo "$name" 输出是$name天空博客S%em ?RS
''单引号,单引号里面如果包含变量会求值,例如:name="JanusLe" echo '$name'则输出JanusLe天空博客.Nn)A2}-@G9y5g F
``反引号,反引号内可包含命令,运行时候会先求反引号内的命令的结果,比如: cmd=`ls` 则可能输出a.c b.c(结果和运行ls命令一样)天空博客-j#M"IR-rF
\斜杠 ,有些字符可能是BASH的关键字,不能直接输出,要用的话加\。比如要输出句号可以这样\. 当然也可以用单引号或者双引号包含。也可以达到效果
&{qXV }0
Qc5w$?#}s5n0参数
[ _h"FF;Xp2U0 脚本可以接受输入参数。类似于C,第一的参数是$1,依此类推。$#表示参数书目 , s*,s@可以存放所有参数天空博客 nr%o3z&w+Ay
天空博客Dv Pca%\H
导出变量
mSfe1L_a5|0 如果有两个脚本a和b,b要用a中的变量,需要将a种的变量导出才可以用,具体方法是export 变量名天空博客?2NY oM!Zk0u |!FEy
天空博客*yE J @Q"t} |
let 命令天空博客(Ev|6z$T;p3K
如果需要命令进行运算可以使用let 比如 let a=1+3 则a的值将为4
2]1r!G#u.M+e^0也可以用双括号达到相同效果((a=1+3))天空博客H0E9q3[YE,P
_n#wuD1l#O/H0test 命令
Z1gm [6|rO0_2wo0 用于测试表达式,格式:
6Ei'[r/D0 test value -option value
Os7o&|eQ0 比如 test 3 -eq 4 //比较3是否等于4
s [ W QB4T0w0F X8j0 可以用两个方括号相同效果。[ 3 -eq 4 ]//括号左右一定要有空格天空博客 HW3\ T yy${
V} h/[}w|0注:可以通过输出$?来判断上一句指令是否成功运行。0为成功运行,其他值为运行失败天空博客1[s+t!TuI5o!TYr4~RI#E
H+|F:|^cY8up1s0条件判断
4mhaZBW:~0if 条件天空博客:@5I4}8p:P&Uf
then
qz6E'q `q Mo N0命令
UL)izF'e K7_K5d0else
HdY;\)~WQ0命令
)k+h;uQ%MzDf0elif 条件
JU5a OdQ&Y V0命令天空博客"{X:HE _P
fi天空博客*@G6|6_6F%Q&x^
`#c{:z}2k!x0case string in
,ZRk3].x*u[0pattern)天空博客 V M1x{ ?S;Jd
命令天空博客bPfI)\Dd
;;
6Wj)n iI"rO1JPi;K0pattern)天空博客iVp!o7\i C
命令
|$| {5]:ZE\{0;;
xQk#g1s%gqo\0*)天空博客$\6m)yN-EF#HM H
默认命令;;
N } uJ2MdB)g0esac天空博客 K:_7f3H*|
v?yrI1p5J0注:pattern可以用正则表达式天空博客mf5vMz#bL2`
可以使用&&或者||进行与,或运算。天空博客 _0M?*wa+q,c
天空博客!`)tKW.?
循环天空博客h7Z0?,QJ-Fs4X
while 条件
|@Rd8c3j4C*G+f-T` L0do
0d+fY"_3E%GLN0变量:
o.uz6~)N^d0 用$+“变量名"表示。例:$name天空博客-v1_F+UF+t)K
引号:天空博客&b|;?~f]rD
""双引号,双引号里面如果包含变量,不会求值,例如:echo "$name" 输出是$name天空博客S%em ?RS
''单引号,单引号里面如果包含变量会求值,例如:name="JanusLe" echo '$name'则输出JanusLe天空博客.Nn)A2}-@G9y5g F
``反引号,反引号内可包含命令,运行时候会先求反引号内的命令的结果,比如: cmd=`ls` 则可能输出a.c b.c(结果和运行ls命令一样)天空博客-j#M"IR-rF
\斜杠 ,有些字符可能是BASH的关键字,不能直接输出,要用的话加\。比如要输出句号可以这样\. 当然也可以用单引号或者双引号包含。也可以达到效果
&{qXV }0
Qc5w$?#}s5n0参数
[ _h"FF;Xp2U0 脚本可以接受输入参数。类似于C,第一的参数是$1,依此类推。$#表示参数书目 , s*,s@可以存放所有参数天空博客 nr%o3z&w+Ay
天空博客Dv Pca%\H
导出变量
mSfe1L_a5|0 如果有两个脚本a和b,b要用a中的变量,需要将a种的变量导出才可以用,具体方法是export 变量名天空博客?2NY oM!Zk0u |!FEy
天空博客*yE J @Q"t} |
let 命令天空博客(Ev|6z$T;p3K
如果需要命令进行运算可以使用let 比如 let a=1+3 则a的值将为4
2]1r!G#u.M+e^0也可以用双括号达到相同效果((a=1+3))天空博客H0E9q3[YE,P
_n#wuD1l#O/H0test 命令
Z1gm [6|rO0_2wo0 用于测试表达式,格式:
6Ei'[r/D0 test value -option value
Os7o&|eQ0 比如 test 3 -eq 4 //比较3是否等于4
s [ W QB4T0w0F X8j0 可以用两个方括号相同效果。[ 3 -eq 4 ]//括号左右一定要有空格天空博客 HW3\ T yy${
V} h/[}w|0注:可以通过输出$?来判断上一句指令是否成功运行。0为成功运行,其他值为运行失败天空博客1[s+t!TuI5o!TYr4~RI#E
H+|F:|^cY8up1s0条件判断
4mhaZBW:~0if 条件天空博客:@5I4}8p:P&Uf
then
qz6E'q `q Mo N0命令
UL)izF'e K7_K5d0else
HdY;\)~WQ0命令
)k+h;uQ%MzDf0elif 条件
JU5a OdQ&Y V0命令天空博客"{X:HE _P
fi天空博客*@G6|6_6F%Q&x^
`#c{:z}2k!x0case string in
,ZRk3].x*u[0pattern)天空博客 V M1x{ ?S;Jd
命令天空博客bPfI)\Dd
;;
6Wj)n iI"rO1JPi;K0pattern)天空博客iVp!o7\i C
命令
|$| {5]:ZE\{0;;
xQk#g1s%gqo\0*)天空博客$\6m)yN-EF#HM H
默认命令;;
N } uJ2MdB)g0esac天空博客 K:_7f3H*|
v?yrI1p5J0注:pattern可以用正则表达式天空博客mf5vMz#bL2`
可以使用&&或者||进行与,或运算。天空博客 _0M?*wa+q,c
天空博客!`)tKW.?
循环天空博客h7Z0?,QJ-Fs4X
while 条件
|@Rd8c3j4C*G+f-T` L0do