Shell脚本学习笔记-函数

本文详细介绍了Shell脚本中的函数使用,包括函数定义、返回值、退出码,以及如何处理函数中的变量,特别是参数和局部变量。此外,还探讨了如何在脚本中引用其他脚本的函数库,通过source命令实现不同脚本间的函数共享。

1.  基本的脚本函数

1.1 函数的定义

function name {
        commands
}
或者

name() {
     commands
}

1.2 简单示例

#!/bin/sh

function Func01 {
	echo "This is function of Func01"
}


Func02() {
	echo "This is function of Func02"
}

Func01

Func02
运行结果:


1.3 函数返回值与退出码

#!/bin/sh

function Func01 {
	echo "This is function of Func01"
}


Func02() {
	echo "This is function of Func02"
}

Func03(){
	echo "This is function of Func02"
       #自定义退出码,退出码需限制在0-255之间
        return 10
}

Func01
#输出函数运行的退出码,0表示成功
echo "$?"

#运行一个未定义的函数,观察退出码
Func04
echo "$?"

#观察函数自定义的退出码
Func03
echo "$?"
运行结果:


2. 函数中变量使用

2.1 函数中变量参数处理

#!/bin/sh

sum(){
     if [ $# -eq 2 ]
     then
         sum=$[ $1+$2 ]
         echo $sum
     else
          echo "please input 2 args"
          return 1
     fi   
}


value=`sum $1 $2`
if [ $? -eq 0 ]
then
    echo $value
else
    echo "Err $value"
fi
运行结果:


2.2 函数中使用数组参数  

#!/bin/sh

#定义一个数组
numberArray=(1 2 3 4 5 6 7 8 9 10)

#定义一个求和函数
sum(){
   result=0
   for var in $@
   do
      result=$[ $result+$var]
   done
   echo $result
}

#输出数组的长度
echo "输出数组的长度: ${#numberArray[@]}"
#输出数组中指定的值
echo "输出数组中指定的值:${numberArray[2]}"

#修改数组指定的值
numberArray[2]=4
echo "修改数组指定项后的值:${numberArray[2]}"

#调用函数,使用数组变量
echo "调用函数,使用数组变量: `sum ${numberArray[*]}`"
运行结果:


2.3 通过local关键字定义函数中的局部变量

#!/bin/sh

#定义一个数组
numberArray=(1 2 3 4 5 6 7 8 9 10)

#定义一个求和函数
sum(){
#未定义局部变量的情况
   result=0
   for var in $@
   do
      result=$[ $result+$var ]
   done
   echo $result
}
echo "未定义局部变量的情况"
sum ${numberArray[*]}
echo "$result"


sum(){
#使用local关键字将result变量定义为局部变量
   local result=0
   for var in $@
   do
      result=$[ $result+$var]
   done
   echo $result
}
echo "使用了local关键字定义局部变量的情况"
sum ${numberArray[*]}
echo "$result"
运行结果:


3. 引用函数库

3.1 通过source filepath命令在脚本中引用其他其他脚本的函数库, source filepath也可简写为“. filepath”的形式

3.2 简单示例,编写两个shell脚本,在newshell.sh脚本中引用shellscript的函数,e.g:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值