函数及数组

一、函数

函数的基本格式

[function] 函数名 (){
命令序列
[return x] #使用return或者exit可以显式的结束函数
}

法二:
函数名(){
命令序列
}

函数注意事项
直接写函数中调用

函数直接写函数名同名函数后一个生效

调用函数一定要先定义

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

函数调用的方法

#!/bin/bash
h () {
echo “hello”
}

w () {
echo “world”
}

good () {
h
w
}

h
w
good
在这里插入图片描述

函数的返回值
#!/bin/bash
function test1 {
read -p “请输入一个数字:” num
return [ [ [num*2]
}
test1

echo $?
在这里插入图片描述
在这里插入图片描述

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

#!/bin/bash
sum () {
echo “第一个变量:” $1
echo “第二个变量:” $2
let n=$1+$2
echo $n
}
sum $2 $1
在这里插入图片描述
在这里插入图片描述

函数的递归
#!/bin/bash
#计算你输入的数值作为阶乘
fun() {
if [ 1 − e q 1 ] ; t h e n e c h o 1 ; e l s e l o c a l t p = 1 -eq 1 ];then echo 1; else local tp= 1eq1];thenecho1;elselocaltp=[ 1 − 1 ] l o c a l r e s = 1 - 1] local res= 11]localres=(fun $tp)
echo $[$1 * $res]
fi
}

read -p “请输入:” num
res=$(fun $num)
echo $res
在这里插入图片描述
在这里插入图片描述

数组

shell数组的含义

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组)
数组下标由0开始
Shell数组用括号来表示,元素用“空格”符号分隔开
在shell语句中,使用、遍历数组时,数组格式要写成*$ {arr[@]}或$ {a[*]}

定义数组的方法

数组名=(value1 value2 … valuen)
在这里插入图片描述
数组名=([0]=value0 [1]=value0 [2]=value0 …)
在这里插入图片描述
数组名[0]=“value”
数组名[1]=“value”
数组名[2]="value
[root@]localhost ~# a[0]=1
[root@localhost ~]# a[1]=2
[root@localhost ~]# a[2]=3
[root@localhost ~]# a[3]=4
[root@localhost ~]# a[4]=5
[root@localhost ~]# echo ${a[@]}
1 2 3 4 5

数据的遍历

#!/bin/bash
x=(11 22 33 44 55 66)
for i in ${x[@]}
do
echo $i
done
在这里插入图片描述
在这里插入图片描述

数组切片

#!/bin/bash
p=(1 2 3 4 5 6 7 8)
echo “输出整个数组:” ${p[@]}
echo “输出数组2-4:” ${p[@]:1:3}
echo “输出6之后的数字:” ${p[@]:5:4}
在这里插入图片描述
在这里插入图片描述

数组替换

临时更换:
[root@localhost ~]# echo ${a[@]/3/33}
在这里插入图片描述

永久更换:重新赋值
[root@localhost ~]# a=(${a[@]/2/22})
在这里插入图片描述

数组删除和指定下标删除

在这里插入图片描述

冒泡函数

#!/bin/bash
array=(90 70 80 100 30 66)
echo "old_array: a r r a y [ ∗ ] " l t = {array[*]}" lt= array[]"lt={#array[*]}
#定义比较轮数,比较轮数为数组长度减一,从1开始
for ((i=1;i<=KaTeX parse error: Expected 'EOF', got '#' at position 17: …t;i++)) do #̲确定比较元素的位置,比较相邻两…lt-i;j++))
do
#定义第一个元素的值
first=KaTeX parse error: Expected '}', got 'EOF' at end of input: {array[j]}
#定义第二个元素的值
k= [ [ [j+1]
second=KaTeX parse error: Expected '}', got 'EOF' at end of input: {array[k]}
#如果第一个元素比第二个元素大就互换
if [ $first -gt KaTeX parse error: Expected 'EOF', got '#' at position 23: …];then #̲把第一个元素的值保存到临时变量…first
#把第二个元素值赋给第一个元素
array[ j ] = j]= j]=second
#把临时的变量赋给第二个元素
array[ k ] = k]= k]=temp
fi
done
done
echo “new_array:${array[@]}”
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值