Shell编程:Linux系统环境程序设计之路

【字号: 日期:2024-10-13浏览:47作者:雯心
;函数 别的高级语言都有函数的感念,当然shell编程也有这个概念,当写一个比较大型的shell程序的时候,如果没有函数,则会到处都是重复的代码。当然也可以调用别的脚本,但是速度会比较慢。所以函数是必不可少并且非常重要的一个东西。 定义函数的格式function_name(){...}例子://~ fun_sshow(){echo 'show $*'}echo $*echo 'after function'show c decho $*exit 0/////////////////////////////$./fun_s a b结果是a bafter functionc da b从上面的例子可以看出,当脚本调用函数的时候,脚本程序的位置参数会被替换成函数的位置参数,并且函数调用结束后还原。 return://~ return_s#!/bin/bashfirst(){echo 'is return'}second(){echo 'before return'return '0'echo 'after return'}return_value='$(first)'echo $return_valuesecond&&echo 'return 0'||echo 'return other'exit 0//////////////////////////////////////输出 is returnbefore returnreturn 0该例子说明可以捕获函数内echo的字符串,如echo $(first) , 函数在return后不会再执行下面的语句。 second&&echo 'return 0'||echo 'return other' 该句的输出为 return 0。这里有人可能会和C语言混淆,因为在C语言里0表示的是false。而这里的0表示函数执行成功,可以理解为true,所以会输出return 0。 命令 break,continue 和c语言基本类似 echo 了解一点即可echo -n 输出没有换行。 eval: 例子://~ eval_s #!/bin/bashvar1=abcdvar2=var1eval var3=$$var2echo $var3exit 0///////////////////////////eval相当于一个额外的$,它给出一个变量值的值,如例子里先是$var2使var3变成$var1,又var1=abcd,所以var3变为abcd,连续解析了两次变量。 export: 看下面两个例子可以很好的说明export的作用。 //~ export1_s#!/bin/bashvar1='this is var1'var2='this is var2'export var2./export2_sexit 0/////////////////////////////~ export2_s#!/bin/bashecho '$var1'echo '$var2'exit 0/////////////////////////输出:this is var2输出结果说明var1为空而var2却有值,这正是export起的作用,把var2变成了一个环境变量。 再看个例子: #!/bin/bashecho $var1echo $var2echo $var3exit 0////////////////////////////~ set-a_s#!/bin/bashset -avar1='var1'var2='var2'var3='var3'./set-a2_sexit 0////////////////////////////~ set-a2_s输出:var1var2var3set -a的作用就是把它之后声明的所有变量都export printf: 和C语言里的printf用法很相似的一个命令,使用非常方便。 set://~ set_s#!/bin/bashfun1(){echo 'a b c d'}set $(fun1)echo $1echo $(date)set $(date)echo $1exit 0///////////////////////输出: a 2008年 03月 06日 星期四 03:57:55 CST 2008年 date的输出是几个由空格分隔的值,set的作用能分隔出每个域。 shift: 就是让$2变$1,$3变$2,依此类推。 trap: 非常有用的一个命令,用于指定接受到信号后进行的动作,系统定义了非常多的信号类型,用trap -l命令可以查看所有的信号。 常见的几个信号有: INT(2) 中断,按下ctrl+c组合键引发的 QUIT(3) 退出,按下ctrl+引发 例子: //~ trap_s#!/bin/bashtrap var=2 INTecho 'please enter ctrl+c'var=1while [ $var = 1 ]doecho 'in while'sleep 1doneexit 0/////////////////////////这个例子在我按下ctrl+c后改变了var的值,所以跳出循环,程序结束。 shell下的程序设计非常强大,你可以用它做出很多小工具,让你的使用linux系统更加流畅。shell还有非常多的功能文中没有提到,需要大家发现问题后再自己去解决。

标签: Linux系统
相关文章: