您的位置 首页 产品

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

别的高级语言都有函数的感念,当然shell编程也有这个概念,当写一个比较大型的shell程序的时候,如果没有函数,则会到处都是重复的代码。当然也可

其他高档言语都有函数的感念,当然shell编程也有这个概念,当写一个比较大型的shell程序的时分,假如没有函数,则会处处都是重复的代码。当然也能够调用其他脚本,可是速度会比较慢。所以函数是必不可少而且十分重要的一个东西。

界说函数的格局

function_name(){…}

比如:

//~ fun_s

show(){

echo show $*

}

echo $*

echo after function

show c d

echo $*

exit 0

/////////////////////////////

$./fun_s a b

成果是

a b

after function

c d

a b

从上面的比如能够看出,当脚本调用函数的时分,脚本程序的方位参数会被替换成函数的方位参数,而且函数调用完毕后复原。

return:

//~ return_s

#!/bin/bash

first(){

echo is return

}

second(){

echo before return

return 0

echo after return

}

return_value=$(first)

echo $return_value

secondecho return 0  echo return other

exit 0

//////////////////////////////////////

输出

is return

before return

return 0

该比如阐明能够捕获函数内echo的字符串,如echo $(first) , 函数在return后不会再履行下面的句子。

secondecho 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/bash

var1=abcd

var2=var1

eval var3=\$$var2

echo $var3

exit 0

///////////////////////////

eval相当于一个额定的$,它给出一个变量值的值,如比如里先是$var2使var3变成\$var1,又var1=abcd,所以var3变为abcd,接连解析了两次变量。

export:

看下面两个比如能够很好的阐明export的效果。

//~ export1_s

#!/bin/bash

var1=this is var1

var2=this is var2

export var2

./export2_s

exit 0

///////////////////////////

//~ export2_s

#!/bin/bash

echo $var1

echo $var2

exit 0

/////////////////////////

输出:

this is var2

输出成果阐明var1为空而var2却有值,这正是export起的效果,把var2变成了一个环境变量。

再看个比如:

#!/bin/bash

echo $var1

echo $var2

echo $var3

exit 0

//////////////////////////

//~ set-a_s

#!/bin/bash

set -a

var1=var1

var2=var2

var3=var3

./set-a2_s

exit 0

//////////////////////////

//~ set-a2_s

输出:

var1

var2

var3

set -a的效果便是把它之后声明的一切变量都export

printf:

和C言语里的printf用法很类似的一个指令,运用十分便利。

set:

//~ set_s

#!/bin/bash

fun1()

{

echo a b c d

}

set $(fun1)

echo $1

echo $(date)

set $(date)

echo $1

exit 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/bash

trap var=2 INT

echo please enter ctrl+c

var=1

while [ $var = 1 ]

do

echo in while

sleep 1

done

exit 0

/////////////////////////

这个比如在我按下ctrl+c后改变了var的值,所以跳出循环,程序完毕。

shell下的程序设计十分强壮,你能够用它做出许多小工具,让你的运用linux体系愈加流通。shell还有十分多的功用文中没有说到,需求我们发现问题后再自己去处理。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/321237.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部