日期:2014-05-16  浏览次数:20958 次

Linux的Shell Script基本语法

特点

1 纯文本文件

2 包含shell的语法和命令(内部和外部命令)

3 支持正则表达式,管线命令,数据重导向等功能

4 支持数组、循环、条件与逻辑判断

5 不需编译即可执行,且有debug工具

6?script速度较慢,占用资源较多

?

基本语法

1 #!/bin/sh,第一行声明此script所使用的shell

2 #号后面都是注释,标注此script的功能,作者,时间等

3 export PATH,声明此script运行的环境变量

4 exit 0,最后script结束返回结果值,0代表正确

?

输入参数

$0 代表此script的文件名
$1

代表此script的第一个参数。$2代表第二个参数,以此类推

$# 代表参数的个数
$@ 代表"$1" "$2",每个参数独立的使用双引号
$* 代表"$1c$2",c为分隔符,默认为空格
shift [n] shell内部命令。对现有多个参数进行偏移删除

?

function功能

1 function的内容一定在script正文的最前面,这样才能被其他部分引用

2?function拥有内建变量。$0代表函数名,$1代表函数第一个参数

?

判断式

test 检查文件各种属性或比较两个值
?[](中括号)

用法同test

中括号内的每个组件都需要空格来分隔

在中括号内的变量或常量最好都用双引号

中括号之间可以使用&&或||逻辑判断符

?

条件判断

if [判断式];?then

fi

单层条件判断

if [判断式];?then

elif[判断式];then

else

fi

多层条件判断

case $变量 in

"value1")

;;

"value2")

;;

*)

;;

esac

每个value最好用双引号

每个程序段结尾需要用到;;

最后*表示其他所有值

?

循环

while?[判断式]

do

done

不定循环

当条件成立,进行循环

until?[判断式]

do

done

不定循环

当条件成立,终止循环

for 变量 in value1?value2

do

done

固定循环

变量每次从in后面取值,进行循环

for ((初始值;限制值;步阶))

do

done

固定循环

初始值,i=1

限制值,i<=100

步阶,i=i+1

?

?

Bash的参数进行debug

-n 不执行script,仅查询语法
-v 在执行script前,先将script的内容输出到屏幕
-x

将使用的script内容显示到屏幕

显示结果的,同时也显示相应的语句,debug

?

执行方式的区别

1 在新的子bash环境下运行此script

$ ./shell.sh          //script需要rx权限
$ bash shell.sh       //script需要r权限

?

2 在当前的bash环境下运行此script

$ source shell.sh
?

相关文件

/etc/init.d/ ? ? 此路径下的文件都是系统的shell scripts