Shell脚本学习笔记-函数

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 "$?"
运行结果:

Shell脚本学习笔记-函数_第1张图片

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
运行结果:

Shell脚本学习笔记-函数_第2张图片

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[*]}`"
运行结果:

Shell脚本学习笔记-函数_第3张图片

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"
运行结果:

Shell脚本学习笔记-函数_第4张图片

3. 引用函数库

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

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

Shell脚本学习笔记-函数_第5张图片

你可能感兴趣的:(shell)