函数和数组

一、函数

1、函数的作用

在编写脚本时,有些脚本可以反复使用,可以调用函数来解决

语句块定义成函数约等于别名

函数使用方法:

1. 定义函数

2. 再引用函数

基本格式有三种如下:

1.

function 函数名{

​                命令序列

}

2.

函数名()

命令序列

}

3.

function func_name () {

 ...函数体...

}

注意事项

1. 直接写 函数中调用函数 直接写函数名

2. 同名函数 后一个生效

3. 调用函数一定要先定义

4. 只要先定义了调用的 其他函数定义顺序无关

2、查看函数

[root@localhost ~]# declare -F
#函数列表
declare -f __HOSTNAME
declare -f __SIZE
declare -f __SLAVEURL
[root@localhost ~]# declare -f
#函数具体的定义

例一:判断操作系统版本

[root@localhost ~]#cat /etc/os-release 
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

3、删除函数

4、函数的返回值

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

使用原则:

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

2. 退出码必须是0-255,超出的值将为除以256取余

#!/bin/bash
test1 () {
        read -p "请输入一个数字:" num
        return $[$num*2]


}

test1
echo $?

怎么解决超过 255

#!/bin/bash
test1 () {
        read -p "请输入一个数字:" num
        echo $[$num*2]


}

result=`test1`
echo $result

return的用法

user () {
if  [ $USER = root ] 
then
echo "这是管理员用户"
else
echo "这不是管理员用户"
return 1
fi

}

5、函数的传参数

sum1 (){
	sum=$[$1 +$2]
	echo $sum
}

read -p "请输入第一个参数:" num1
read -p "请输入第一个参数:" num2
sum1 $num1 $num2






sum1 () {
        sum=$[$1 + $2]
        echo $sum
}
sum1 10 20

函数变量的作用范围:

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

shell脚本中函数的变量默认全局有效

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

6、使用函数文件

我们可以新建一个专门存放函数的文件

7、函数的作用范围

8、函数递归

函数调用自己本身的函数

#阶乘

5! 1* 2 * 3 * 4 * 5

二、数组

1、基础

定义数组格式:

1. 数组名=(value0  value1 value2 value3 ......)

2. 数组名=([0]=value   [1]=value1  [2]=value2 ....)

3. 列表名="value0  value1 value2 value3 ...... "

   数组名=($列表名)

4. 数组名[0]="value1"

   数组名[1]="value2"

   数组名[2]="value3"

数组的包括数据类型

- 数值型

- 字符型

- 混合型数值加字符

使用" "或' '定义单引号或双引号括起来

例一成绩测试脚本

set -x
read -p "请输入您的分数(0-100):" GRADE
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ]
then echo "$GRADE 分!优秀"
set +x
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]
then
echo "$GRADE 分,合格"
else
echo "$GRADE 分?不合格"
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值