Li
uxShell脚本编程基础
本文作者:Leal
授权许可:
创作共享协议GNU自由文档许可证
编辑者:谋万世全局者
我们可以使用任意一种文字编辑器,比如gedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):
bi
sh…
注意:最好使用“bi
bash”而不是“bi
sh”,如果使用tcshell改为tcsh,其他类似。
符号用来告诉系统执行该脚本的程序,本例使用bi
sh。编辑结束并保存后,如果要执行该脚本,必须先使其可执行:
chmodxfile
ame
此后在该脚本所在目录下,输入file
ame即可执行该脚本。
目录
1变量赋值和引用2Shell里的流程控制
o21if语句o22和操作符o23case语句o24select语句o25whilefor循环3Shell里的一些特殊符号o31引号4HereDocume
t5Shell里的函数6Shell脚本示例o61二进制到十进制的转换o62文件循环拷贝7脚本调试
f变量赋值和引用
Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:
1首个字符必须为字母(az,AZ)2中间不能有空格,可以使用下划线(_)3不能使用标点符号4不能使用bash里的关键字(可用help命令查看保留关键字)
需要给变量赋值时,可以这么写:
变量名值
要取用一个变量的值,只需在变量名前面加一个注意给变量赋值的时候,不能在””两边留空格
bi
sh对变量赋值:a”helloworld”等号两边均不能有空格存在打印变量a的值:echo“Ais”a
挑个自己喜欢的编辑器,输入上述内容,并保存为文件first,然后执行chmodxfirst使其可执行,最后输入first执行该脚本。其输出结果如下:
Aishelloworld
有时候变量名可能会和其它文字混淆,比如:
um2echo“thisisthe
um
d”
上述脚本并不会输出”thisisthe2
d”而是”thisisthe“;这是由于shell会去搜索变量
um
d的值,而实际上这个变量此时并没有值。这时,我们可以用花括号来告诉shell要打印的是
um变量:
um2echo“thisisthe
um
d”
其输出结果为:thisisthe2
d注意花括号的位置:
um2echo“thisisthe
um
d”
f其输出结果为:thisisthe2
d需要注意shell的默认赋值是字符串赋值。比如:
var1varvar1echovar
打印出来的不是2而是1+1。为了达到我们想要的效果有以下几种表达方式:
let“var1″varvar1varexprvar1注意加号两边的空格,否则还是按照字符串的方式赋值。
注意:前两种方式在bash下有效,在sh下会出错。
let表示数学运算,expr用于整数值运算,每一项用空格隔开,将中括号内的表达式作r