预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Shell编程:Linux系统环境程序设计之路 函数 别的高级语言都有函数的感念,当然shell编程也有这个概念,当写一个比较大型的shell程序的时候,如果没有函数,则会到处都是重复的代码。当然也可以调用别的脚本,但是速度会比较慢。所以函数是必不可少并且非常重要的一个东西。 定义函数的格式 function_name(){...} 例子: //~fun_s show(){ echo"show$*" } echo$* echo"afterfunction" showcd echo$* exit0 ///////////////////////////// $./fun_sab 结果是 ab afterfunction cd ab 从上面的例子可以看出,当脚本调用函数的时候,脚本程序的位置参数会被替换成函数的位置参数,并且函数调用结束后还原。 return: //~return_s #!/bin/bash first(){ echo"isreturn" } second(){ echo"beforereturn" return"0" echo"afterreturn" } return_value="$(first)" echo$return_value second&&echo"return0"||echo"returnother" exit0 ////////////////////////////////////// 输出 isreturn beforereturn return0 该例子说明可以捕获函数内echo的字符串,如echo$(first),函数在return后不会再执行下面的语句。 second&&echo"return0"||echo"returnother"该句的输出为return0。这里有人可能会和C语言混淆,因为在C语言里0表示的是false。而这里的0表示函数执行成功,可以理解为true,所以会输出return0。 命令 break,continue和c语言基本类似 echo了解一点即可echo-n输出没有换行。 eval: 例子: //~eval_s #!/bin/bash var1=abcd var2=var1 evalvar3=\$var2 echo$var3 exit0 /////////////////////////// eval相当于一个额外的$,它给出一个变量值的值,如例子里先是$var2使var3变成\$var1,又var1=abcd,所以var3变为abcd,连续解析了两次变量。 export: 看下面两个例子可以很好的说明export的作用。 //~export1_s #!/bin/bash var1="thisisvar1" var2="thisisvar2" exportvar2 ./export2_s exit0 /////////////////////////// //~export2_s #!/bin/bash echo"$var1" echo"$var2" exit0 ///////////////////////// 输出: thisisvar2 输出结果说明var1为空而var2却有值,这正是export起的作用,把var2变成了一个环境变量。 再看个例子: #!/bin/bash echo$var1 echo$var2 echo$var3 exit0 ////////////////////////// //~set-a_s #!/bin/bash set-a var1="var1" var2="var2" var3="var3" ./set-a2_s exit0 ////////////////////////// //~set-a2_s 输出: var1 var2 var3 set-a的作用就是把它之后声明的所有变量都export printf: 和C语言里的printf用法很相似的一个命令,使用非常方便。 set: //~set_s #!/bin/bash fun1() { echo"abcd" } set$(fun1) echo$1 echo$(date) set$(date) echo$1 exit0 ///////////////////////输出:a2008年03月06日星期四03:57:55CST2008年 date的输出是几个由空格分隔的值,set的作用能分隔出每个域。 shift: 就是让$2变$1,$3变$2,依此类推。 trap: 非常有用的一个命令,用于指定接受到信号后进行的动作,系统定义了非常多的信号类型,用trap-l命令可以查看所有的信号。 常见的几个信号有: INT(2)中断,按下ctrl+c组合键引发的