Linux常用命令之shell编程(七)

#!/bin/sh:指定执行脚步的shell

#:注释行

1.设置变量:

s1="content"

s2=$s1

s3="${s1}_test"

s4=`date`

2.特殊变量

$0:这个程序的文件名

$n:第n个参数,n=1-9

$*:这个程序的所有参数

$#:这个程序的参数个数

$$:这个程序的PID

$?:执行上一个命令的返回值,0:success非0:error

还有一个特殊用法,打印长度:

var=1234567890

echo${#var}

10

3.从键盘读入数据

read变量:此时会等待用户键入变量值

read变量1变量2变量3:可以设置多个

4.算术运算

expr3+5

expr$var-5

expr100/5

expr2\*4:*号要进行转意

expr`expr5+7`/3

var1=`expr3+5`

expr\(3+5\)/2:括号要转意

bash中,变量自增的五种方法:

i=0

1.i=`expr$i+1`

2.leti+=1

3.((i++))

4.i=$[$i+1]

5.i=$(($i+1))

5.测试语句test==[]

1)字符串

str1=str2:测试字符串是否相等

str1!=str2:测试字符串是否不等

-zstr:测试字符串是否为空

-nstr:测试字符串是否不为空

2)整数

int1-eqint2:测试整数是否相等

int1-geint2:测试是否大于等于

int1-gtint2:测试是否大于

int1-leint2:测试是否小于等于

int1-ltint2:测试是否小于

int1-neint2:测试是否不相等

3)文件

-dfile:是否为目录

-ffile:是否为常规文件

-xfile:是否可执行

-rfile:是否可读

-wfile:是否可写

-afile:是否存在

-sfile:文件大小是否非0

6.流程控制

exit0:正常退出

exit1:非0,非正常退出

-a:逻辑与,两个条件同时成立,结果为真

-o:逻辑或,两个条件只要有一个成立,结果为真

7.if条件判断

if[-d$file];then

…………

fi

if[-d$file];then

…………

else

…………

fi

if[-d$file];then

…………

elif[-f$file];then

…………

else

…………

fi

if[-d$file-o-f$file];then

…………

fi

8.for循环

for变量in列表

do

……

done

例子:

fordayinSunMonTueWedThuFriSat

do

echo"Thedayis:$day"

done

forlinein`catfile`

do

echo$line

done

9.select选项列表

select把关键字中的每一项做成类似表单,以交互执行do和done之间的命令

select变量in关键字

do

command1

command2

……

done

例子:select.sh

selectvarin"Linux""UNIX""Windows""Other"

do

echo"Youhaveselected$var"

break

done

显示结果:

#shselect.sh

1)Linux

2)UNIX

3)Windows

4)Other

#?1

YouhaveselectedLinux

10.case条件匹配

case变量in

字符串1)命令列表

;;

字符串2)命令列表

;;

*)命令列表:其它情况

;;

esac

例子:

var="start"

case"$var"in

start)

echo"start"

;;

reload)

echo"reload"

;;

stop)

echo"stop"

;;

status)

echo"status"

;;

*)

echo"$0:Usage:$0{start|status|stop|reload}"

exit1

;;

esac

11.while循环

int1=0

while[$int1-le100]

do

echo$int1

int1=`expr$int1+1`

done

12.until循环:类似while,不同点时条件判断为假时才执行

int1=100

until[$int1-eq0]

do

echo$int1

int1=`expr$int1-1`

done

13.跳出循环

break:跳出整个循环

continue:跳过本次循环,进行下次循环

14.shift指令

每执行一次,参数序列顺序左移一个位置,$#的值减1,移出去的参数不在可用

例子:参数为12345

#!/bin/sh

if[$#-le0]

then

echo"Notenoughparameters"

exit0

fi

sum=0

while[$#-gt0]

do

sum=`expr$sum+$1`

shift#因为每次执行shift,所以上面的$1永远都是下一个参数

done

echo$sum

15.函数

函数定义:

函数名(变量1,变量2,……)

{

命令序列

}

变量均为全局变量,shell没有局部变量,函数的变量参数在方法体内引用时$1,$2,……

例子:

stop(){

echo-n$"Stopping$prog:"

killallnginx

RETVAL=$?

echo

[$RETVAL=0]&&rm-f$nginx_pid/var/lock/subsys/$prog

}

函数调用:

函数名

case"$1"in

stop)

stop

;;

*)

echo$"Usage:$0{start|stop|reconfigure|status}"

exit1

esac

16.脚步调试

sh-x脚步:执行脚步,并显示全部过程

sh-n脚步:不执行脚步,只检查语法错误

17.dos2unix

如果在windows环境下编写的脚步,上传到linux后需要先执行dos2unix进行编码转换,否则不能正确执行

dos2unix*.sh

相关推荐