shell函数和数组概念(含案例,适合练习)

一、shell函数

1.1、函数的定义

 

1.1.1、return返回的是状态码,需要使用$?调取

1.1.2、echo 返回的是值,使用变量调用

1.1.3、传参:指位置变量

1.1.4、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。

1.1.5、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。

1.1.6、return后跟数值n(0-255)

1.2、调用函数的方法

1.2.1、函数名 [参数1($1)] [参数2($2)

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

1.3、shell函数应用

1.3.1、求两个数的平方相加的结果

1.3.2、比如: 5的平方加上6的平方

1 #!/bin/bash
2 read -p "请输入两个整数:" shu_1 shu_2
3 
4 function  sqrt (){
5   sum=$(expr $(expr $1 * $1) + $(expr $2 * $2))
6 }
7 sqrt $shu_1 $shu_2

二、数组

2.1、数组定义方法

  • 方法一:
1 基本格式
2 数组名=(value0 value1 value2...)
  • 方法二:
1 基本格式
2 数组名=([0]=value [1]=value [2]=value...)
  • 方法三:数组元素之间使用空格隔开
1 基本格式
2 列表名=“value0 value1 value2”
3 数组名=($列表名)
  • 方法四:
1 基本格式
2 数组名[0]=“value”
3 数组名[1]=“value”
4 数组名[2]=“value”
5 ...

2.2、数组操作

2.2.1、获取数组长度

1 基本格式  ${#数组名[@/*]}
2 例如
3 [root@localhost opt]# abc=(10 20 30 40 50)
4 [root@localhost opt]# echo ${#abc[*]}
5 5

2.2.2、读取某下标赋值

 1 基本格式
 2 ${数组名[下标]}
 3 例如
 4 [root@localhost opt]# echo ${abc[0]}
 5 10
 6 [root@localhost opt]# echo ${abc[1]}
 7 20
 8 [root@localhost opt]# echo ${abc[1]}
 9 20
10 [root@localhost opt]# echo ${abc[2]}
11 30
12 ...

2.2.3、获取数组的内容

1 基本格式  ${数组名[@]}
2         ${数组名[*]}
3              以上是把数组的内容一一单列出来
4  例:
5  [root@localhost opt]# echo ${abc[*]}
6 10 20 30 40 50 

2.2.4、数组切片数组,切片即读取数组的一部分

1 基本格式    ${数组名[@]:跳过的元素:元素个数}
2 
3 例:从数组的第二个元素后面取,取3个元素
4         ${name[*]:2:3}
5 这里的 2 指跳过的元素,3 指获取的元素个数

2.3、数组实例

  • 案例1:先输5个数放入数组,然后求出数组的最大值max
 1 #!/bin/bash
 2 for ((i=1;i<=5;i++));do
 3   read -p "请输入第$i个数字:" num
 4   abc[$i-1]=$num
 5 done
 6 
 7 max=${abc[0]}
 8 for ((k=1;k<=${#abc[*]}-1;k++));do
 9   if [ $max -lt ${abc[$k]} ];then
10    max=${abc[$k]}
11   fi
12 done
13 echo "最大值是:$max"  
1 [root@localhost opt]# chmod +x max.sh 
2 [root@localhost opt]# ./max.sh 
3 请输入第1个数字:2
4 请输入第2个数字:3
5 请输入第3个数字:66
6 请输入第4个数字:33
7 请输入第5个数字:111
8 最大值是:111
  • 案例2:交互由用户用户随意输一个数组,求出最大值
 1 #!/bin/bash 
 2 read -p "请输入你的数组长度:" num1
 3 for i in `seq $num1`
 4 do
 5 read -p "请输入$i个数:" shu
 6  number[$i-1]=$shu
 7 done
 8 echo ${number[*]}
 9 max=${number[0]}
10 for((j=1;j<=${#number[*]}-1;j++))
11 do
12     if [ ${number[j]} -gt $max ]
13     then
14         max=${number[j]}
15     fi
16 done
17 echo "最大值为$max"
原文地址:https://www.cnblogs.com/xuhao0705/p/14003817.html