美文网首页
函数与数组

函数与数组

作者: Linux运维 | 来源:发表于2020-06-09 09:00 被阅读0次

一、函数 functions

1.什么是函数
函数就是一组命令的合集,通常用来编写特定的代码模块,供后续重复使用。

简单来说就是将重复的语句命令封装为函数,再进行调用,减少冗余

2.语法

1.第一种方式
caidan() {      #封装
    command..
}
    caidan      #调用、打印

2.第二种方式
function info() {
    command..
} 
    info

3.函数的传参
函数的传参 和 位置参数 不是一个概念,没有关系。

(1) 例如,执行脚本输出的结果为3

#!/bin/bash
one() {
    echo $(( $1 + $2 ))
}
one 1 2

(2) 位置参数与函数的传参结合使用

#!/bin/bash
two() {
    echo $(( $1 + $2 ))      #传递给函数中的变量
}
two $1 $2      #接收脚本位置参数,中转站
#sh fun.sh 3 4 执行脚本结果为7

4.函数的返回值
(1) echo 返回数据

#!/bin/bash
get_user() {
    users=$(cat /etc/passwd |awk -F ":" '{print $1}')
    echo $users      #输出该变量的结果
}

index=1
for i in $(get_user)   #函数相当于命令,所以在调用时可直接执行,或者 $() 执行
do
    echo "This is Number $index: $i"
    index=$[ $index + 1 ]    #自加
done

(2) return 返回状态吗

[root@m01 day-05-fun-array]# cat fun-status.sh 
#!/bin/bash

cal() {
    if [ $1 -eq $2 ];then
        return 0
    else
        if [ $1 -gt $2 ];then
            return 100
        else
            return 200
        fi
    fi
}
cal $1 $2
rc=$?

if [ $rc -eq 100 ];then
    echo "大于"
elif [ $rc -eq 200 ];then
    echo "小于"
elif [ $rc -eq 0 ];then
    echo "等于"
fi

(3) 跳板机脚本

[root@m01 day-05-fun-array]# cat fun-tele.sh 
#!/bin/bash

meminfo() {
cat <<EOF
---------------------------------
|       1) db-172.16.1.51       |
|       2) nfs-172.16.1.31      |
|       3) web-172.16.1.8       |
|       h) help                 |
---------------------------------
EOF
}
meminfo

#让ctrl+c、ctrl+z失效
trap "" HUP INT QUIT TSTP

while true
do
    read -p "请根据编号输入您想要登录的主机:" num
    case $num in
        1)
            ssh root@172.16.1.51
            ;;
        2)
            ssh root@172.16.1.31
            ;;
        3)
            ssh root@172.16.1.8
            ;;
        h)
            meminfo
            ;;
        q)
            exit
            ;;
        *)
            continue
    esac
done

(4) 多级菜单
与跳板机类似,只不过跳板机是一个菜单,简单来说就是不断地进行嵌套

二、数组 array(了解)

为awk数组的学习做铺垫

1.什么是数组
数组主要是用来存值的,他可以存多个值

2.数组的分类

  • 普通数组:定义多个值时,取值只能用 整数 0 1 2 3 ...
books=(linux nginx shell)
books[0]=linux
books[1]=nginx
books[2]=shell
  • 关联数组:可以自定义索引,取值时,只需通过索引名来取值
#首先申明这是一个关联数组
declare -A info
#1.方式一  数组名[索引名]=变量值
info[index1]=pear
info[index2]=apple
info[index3]=orange

#2.方式二 数组名=([索引名]=变量值)
info=([index1]=pear [index2]=apple [index3]=orange)

3.数组的遍历与循环

[root@m01 day-05-fun-array]# cat array.sh 
#!/bin/bash
declare -A shells

while read line
do
    types=$(echo $line |awk -F ":" '{print $NF}')
    #要统计谁就将谁作为索引,然后让其自增
    let shells[$types]++      #用 let 运算

done</etc/passwd
for item in ${!shells[@]}
do
    echo "索引是:$item ,他出现的次数是:${shells[$item]}"
done

注意:

  1. 要统计谁就将谁作为索引,然后让其自增
  2. shells[@] 是输出所有的变量值
  3. !shells[@] 是输出所有的索引名

相关文章

  • React函数组件与类组件

    函数组件与类组件 GitHub地址 函数组件与类组件函数组件(functional component)类组件(c...

  • php之数组

    整理了一份PHP开发中数组操作大全,包含有数组操作的基本函数、数组的分段和填充、数组与栈、数组与列队、回调函数、排...

  • PHP面试题2--常用的数组函数

    php常用数组函数 一,数组操作的基本函数 1. 数组的键名与值 array_values($arr); 获得...

  • SAP ABAP RFC函数(基础)

    函数组与函数概念与关系 本地函数与远程函数 SE37函数的定义(import、export、table等参数) 函...

  • php常用数组操作函数

    在php开发中经常会用到的数组操作 基本函数: 数组分段: 数组与栈 数组与列队 数组排序 数组计算

  • 数组参数: 参数数组: 注: 参数数组与数组参数的不同,在于函数的调用,调用参数数组的函数的时候,我们可以传递过...

  • Numpy

    矩阵与数组 tile 函数 像铺瓷砖一样扩展数据 argsort函数 返回数组值从小到大的索引值,与原数组shap...

  • javascript笔记4

    匿名函数 即时函数 认识数组 创建数组 数组元素的访问(赋值与取值) 数据长度length/元素更新/增加删除 数...

  • 函数与数组

    函数的传参 可变参(不定参)arguments 参数的个数可变,参数数组 1.增加(改变数组内容) push() ...

  • 函数与数组

    当函数的形参为基本数据类型时,是值传递,函数内部改变形参,外部实参的值不变 当函数的形参为数组时,是内存地址的传递...

网友评论

      本文标题:函数与数组

      本文链接:https://www.haomeiwen.com/subject/mrnetktx.html