大夏shell编程学习笔记(2)

创建函数

通过创建shell脚本函数,使得我们可以在其他shell脚本应用程序中使用这些函数。
函数是被赋予名称的脚本代码块,可以在代码的任意位置重用,只需要引用该代码被赋予的函数名称(也就是调用函数)。
在进入正题之前,我们来回顾一下关于一些变量的含义:

$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9$$ 是脚本运行的当前进程ID$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

①基本函数

function name{
     commands       
}

name(){
     commands
}

②返回值

$?可以获取函数的返回值。

需要注意两点:其一是它返回最近已执行命令的退出状态。其二是退出状态的取值是0~255(可使用return定义返回值,如果不适用, $? 获取的返回值只有0和1)

函数的输出也可以捕获并存放到shell变量中:result='name'

③函数中变量
函数无法从脚本命令行直接访问脚本参数值,必须在调用该函数时手动传递这些数据。

function fun {
 echo $[ $1 *$2 ]
}

value='fun $1 $2'

函数中定义的变量默认为全局变量,要特意声明变量为局部变量的时候,在变量名前面加local,如下:

function fun{
local temp=$ [ $1 + $2 ]
}

④数组变量与函数
向函数中传递数组元素,不能将其当做单个参数传递,要将数组变量拆分为单个元素,然后使用这些元素的值作为函数的参数,函数内部可以将这些参数重新组合成数组变量。

function test{
local newarray
newarray=('echo "$@"')
echo "${newarray[*]}"
}
myarray=(1 2 3 4 5)
a='echo ${myarray[*]}'
result=('test $a')  #如果函数返回的是数值,就直接用result='test $a'
echo "$result"

⑤创建库
假定创建的库文件myfuncs与shell脚本在同一目录,在shell脚本的开头添加:

../myfuncs

如果二者不在同一个目录,那么应该使用路径来访问库文件。

⑥在命令行中使用函数
我们可以在命令行直接输入自己定义的函数,然后直接使用(使用一行命令定义是注意在命令结束前,(即”}”前必须写上“;”)。使用多命令行定义时,只需要在“{”后按回车就可以了),但是在重启shell后自定义的函数不会生效。
我们可以在主目录下的.bashrc文件中定义函数(可以直接定义,课可以采用上面提到过得包含库的路径方式包含已经写过的库文件),这样就可以保证在重启shell后,自定义的函数依然生效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值