shell脚本函数与数组

目录

一、函数

1、最主要作用:

2、基本格式:

3、注意事项:

4、使用方法:

5、函数变量的作用范围:

6、函数的返回值:

7、函数的文件:

8、函数的传递参数:

9、阶乘:

二、数组

1、概类:

2、数组名和索引(下标)

3、定义数组

4、调用数组(重要) a 为数组名

4.1、单个调用:

4.2、全部调用:

4.3、显示数组的值的个数:

4.4、显示数组所有下标:

4.5、数组分隔:

4.6、删余数组:

5、小实验:


一、函数

1、最主要作用:

避免代码重复,增加可读性,简化脚本

2、基本格式:

格式1:(最通用)
函数名(){
命令序列
}


格式2:
function 函数名
命令序列
}


格式3:
function func_name () {
 ...函数体...

 

3、注意事项

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

  2. 同名函数 后一个生效

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

  4. 每个函数是独立

4、使用方法:

1、先定义函数

2、再调用函数

3、准备一个专门存放函数的文件

5、函数变量的作用范围:

加 local 关键字 可以让 变量 只在函数中生效,不会影响外界环境

6、函数的返回值:

如果 使用函数 那么 $? 使用就会 受限

我们可以使用 return 自定义 $? 的返回值,来判断 函数中的 命令是否成功

7、函数的文件:

专门存放函数的文件

要使用的时候

. 绝对路径的文件名 放在脚本的最前面

8、函数的传递参数:

需要注意

脚本的$1 $2

函数的 $1 $2

是没有关系的

函数的 $1 $2 是指跟在函数后面的值

9、阶乘:

阶乘是一个正整数及其之前所有正整数的积 

求5的阶乘结果 120

4的阶乘结果 *5

3的阶乘结果 *4

2的阶乘结果 *3

1的阶乘结果 *2

1的阶乘结果是 1

fact: 求阶乘的结果 
#!/bin/bash
fact () {
if [ $1 -eq  1 ]
then
echo 1
else
echo $[$1*`fact $[$1-1]`]
fi
}

fact $1

1、脚本创建与运行

2、脚本配置

二、数组

1、概类:

。普通数组 下标是数字

。关联数组 下标是有含义的字符串

。变量: 存储单个元素的内存空间 一一对应

。数组: 存储多个元素的连续的内存空间,相当于多个变量的数据集合 一对多

2、数组名和索引(下标)

。索引的编号从0开始,属于数值索引(下标)

。索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash 4.0 版本之后开始支持

。bash的数组支持稀疏格式 (索引不连续) a[0] a[3)

3、定义数组

1.数组名= ( 数组值中间用 空格隔开 )

2.数组名[下标1]=值1

   数组名[下标2]=值2

.....................................

   数组名[下标n]=值n

例子:

a= (10 20 30 40 50)

4、调用数组(重要) a 为数组名

a=(10 20 30 40 50 60)   #自定义数组

4.1、单个调用:

echo ${a[0]}   #调用第一个值
echo ${a[1]}   #调用第二个值
........................
echo ${a[n]}
   #调用第n+1个值 (有疑惑)

4.2、全部调用:

echo ${a[@]}
echo ${a[*]}

4.3、显示数组的值的个数:


echo ${#a[@]}

4.4、显示数组所有下标:


echo ${!a[@]}

4.5、数组分隔:


echo ${a[@]:2:2}     #跳过前两个,再往后取两个值

4.6、删余数组:


unset 数组名   #将整个数组删除
unset a[0]        #只删除数组的第一个值

5、小实验:

5.1、遍历数组

#!/bin/bash
a=(谭 王 徐 罗 付 汪 韩 戚)

for i in ${a[@]}
do
echo $i
done

1、脚本创建与运行

2、脚本配置

5.2、随机点名小脚本
#!/bin/bash
a=(谭 王 徐 罗 付 汪 韩 戚)

r=`echo $[RANDOM%8]`
echo ${a[$r]}

1、脚本创建与运行

2、脚本配置


5.3、生成随机数组,取最大值与最小值:
#!/bin/bash
for i in {0..9}
do
  a[$i]=$RANDOM
  [ $i -eq 0 ] && min=${a[0]} && max=${a[0]}
  [ ${a[$i]} -gt $max ] && max=${a[$i]}
  [ ${a[$i]} -lt $min ] && min=${a[$i]}
done

echo "数组所有值为: ${a[@]}"
echo "最大值是: $max"
echo "最小值是: $min"

1、脚本创建与运行

2、脚本配置

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值