0
点赞
收藏
分享

微信扫一扫

Shell脚本中的函数

灵魂跑者 2022-04-19 阅读 57
linux

目录

一、函数

1、函数的基本格式

2、函数的返回值

 3、函数传参

 4、函数变量的作用范围

5、函数的递归

 6、函数库


一、函数

函数定义:封装的可重复利用的具有特定功能的代码

函数的作用:语句块定义成函数约等于别名,定义函数,再引用函数,封装的可重复利用的具有特定功能的代码

将命令序列按格式写在一起,可方便重复使用命令序列

1、函数的基本格式

格式1

function 函数名 {
命令序列
}

格式2

函数名() {
命令序列
}

2、函数的返回值

return表示退出函数并返回一个退出值,脚本中可以用 $ ? 变量显示该值

函数的使用原则:

1.函数一结束就取返回值,因为$?变量只返回执行的最后一条命令的退出状态码

2.退出状态码必须是0~255,超出时值将为除以256取余

例1

return

#!/bin/bash
#在文件上方先定义函数,然后在主代码部分调用函数
function test1 {
  read -p "请输入一个值: " value
  return $[$value * 2]
  }
test1       #调用函数
echo $?     #输出返回值

 

超出255,取余

例2

#!/bin/bash
function test1 {
        read -p "请输入一个整数:" num
        echo $[num * 2]  
#改为echo直接在函数中输出
}
test1

 

 3、函数传参

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…即使用位置参数来实现参数传递

#!/bin/bash
sum() {
  echo "请输入第一个参数:" $1
  echo "请输入第二个参数:" $2
  let n=$1+$2
  echo $n
}
sum $1 $2

shell脚本内的参数 再传递给函数内参数

$1 $2 外部命令行输入的位置参数传递给shell脚本内的参数

 

22 33 在脚本中位置为$1 $2在函数中是依次读取

 

 4、函数变量的作用范围

函数在Shell脚本中仅在当前Shell环境中有效

Shell脚本中变量默认全局有效

将变量限定在函数内部使用local命令

#!/bin/bash
aa () {
a=10
}
 
a=20
aa
echo $a

#!/bin/bash
aa () {
local a=10
}
a=20
aa
echo $a

5、函数的递归

函数调用自己本身的函数

实例演示

求任意数的阶乘

#!/bin/bash
fact () {
#判断传入的参数,如果是0,则直接输出1
if [ $1 -eq 0  -o  $1 -eq 1 ]
then
   echo 1
else
#如果传入的参数不是1,则函数调用函数自身,传入参数计算
echo $[$1* $(fact $[$1-1])]
fi
}
fact $1

 6、函数库

创建函数库

#!/bin/bash

jiafa() {
   echo $[$1 + $2]
}

chengfa() {
   echo $[$1 * $2]
}

jianfa() {
   echo $[$1 - $2]
}

chufa() {
if [ $2 -ne 0 ];then
   echo $[$1 / $2]
else
   echo "$2不能为0"
fi
}

调用函数

#!/bin/bash
. /root/hsk.sh
read -p "输入第一个参数值:" first
read -p "输入第二个参数值:" second

result1=`jiafa $first $second`
result3=$(chengfa $first $second)
result2=`jianfa $first $second`
result4=$(chufa $first $second)

echo $result1
echo $result2
echo $result3
echo $result4

 

举报

相关推荐

0 条评论