shell - 函数和数组

函数

# 函数定义的方式
函数名(){   # 注意这里有空格
        commands
}
function 函数名{
    commands
}

# 使用$1, $2, $3方式传参
func(){ echo "hello $1"}    # 调用 func lily
func2(){ echo "hello $*"}   # 传多个参数 func2 lili clerk mephy

# 注意函数传参和脚本传参不一样
num=$1   # 就需要外部传参

# 函数的返回值
return 只能返回 1-255的整数
echo 返回字符串
return 1  # $? 结果为1

数组

数组可以存多个值,根据下标输出值
tt=(aa bb cc dd )
echo ${tt}  # 输出第一个
echo ${tt[@]}  ${tt[*]}  # 都是输出全部
echo ${!tt[*]}  # 输出下标
# 普通数组 VS 关联数组
普通数组 tt=(linux windows   shell) # 下标只能是整数
关联数组 info=([name]=clerk [age]=18 [gender]=female )
取值: info[name]
# 定义关联数组
declare -A info
info=([name]=clerk [age]=18 [gender]=female )
# 取值
echo ${info[age]}
echo ${info[@]}
echo ${!info[@]}   # 取索引
# 取消关联数组
unset info
#################### 普通数组操作 ##############################
# 变量赋值-- 方式一
array[0]=linux
array[1]=python
# 变量赋值 -- 方式二
array2=(aa bb cc)
array(1 3 44 "linux shell" [20]=docker)  # 索引20对应的值为docker
# 赋值 -- 方式三
array4=(`cat /etc/passwd`)  # 一行行的赋值
# 取出值
declare -a|grep array
echo ${array[1]}
echo ${array[@]}  # 取所有
echo ${! array[@]}  # 取索引
echo ${#array[@]}  # 统计数组元素个数

############################ 关联数组操作 ###########################
1. 声明关联数组
declare -A info
2. 赋值
info[name]=clerk  # 单个赋值
info=([age]=18 [gender]=female)
3. 取值
echo ${info[name]}
echo ${info[@]}   # 取所有
echo ${!info[@]}  #取索引
echo ${#info[@]}  # 看个数
4. 查看
declare -A|grep info

数组的遍历与循环

# 通过数组的索引进行遍历
#!/usr/bin/bash
# 批量对数组进行赋值
i=0
while read line
do
    hosts[i++]=$line
done</etc/hosts
# 取出数组中的每一个元素和其索引
for i in ${!hosts[@]}
do
    echo "索引和值分别为: $i , ${hosts[i]}"
done

使用关联数组统计文件中的男女性别

#!/usr/bin/bash
# 注意要先声明
declare -A info_sex
# 遍历文件
while read line
do
    sex=$(echo $line|awk '{print $2}')
    let info_sex[$sex]++    # 每循环一次就加一
done<gender.txt
# 遍历数组,取出所有
for i in ${!info_sex[@]}
do
    echo $i , ${info_sex[$i]}
done
'''
将性别作为key, 出现的次数为value
let info_sex[$sex]++
'''

使用数组统计 /etc/passwd的shell 的数量

#!/usr/bin/bash
declare -A array_pass
while read line
do
    type=$(echo $line|awk -F ":" '{print $NF}')
    let array_pass[$type]++
done</etc/passwd

for i in ${!array_pass[@]}
do
    echo $i,  ${array_pass[$i]}

done

统计Nginx 日志IP访问次数

#!/usr/bin/bash
declare -A nginx_ip
while read line
do
        type=$(echo $line|awk '{print $1}')
        let nginx_ip[$type]++

done<log.log

for j in ${!nginx_ip[@]}
do
        echo $j  , ${nginx_ip[$i]}

done
#!/usr/bin/bash

declare -A tcp_status
ss_types=$(ss -an|awk '{print $2}')
for i in $ss_types
do
    let tcp_status[$i]++
done
for j in ${!tcp_status[@]}
do
    echo $j, $tcp_status[$j]
done

原文地址:https://www.cnblogs.com/Afrafre/p/11405729.html

时间: 2024-11-08 11:16:30

shell - 函数和数组的相关文章

shell 函数 返回数组

shell 函数 返回数组,布布扣,bubuko.com

shell - 函数、数组定义与调用

#!/bin/bash # returning an array value function arraydblr() { local origarray local newarray local elements local i origarray=(`echo "[email protected]"`) newarrray=(`echo "[email protected]"`) elements=$[ $# -1 ] for((i=0;i<=$eleme

shell函数和数组

[toc] shell函数和数组 一.shell中的函数 1.1 函数格式1 function name { commands } 示例1: #! /bin/bash function inp(){ //定义一个inp的函数 echo $1 $2 $3 $0 $# } inp 1 a 2 b //传入参数 //传入参数 运行结果 [[email protected] ~]# sh function1.sh 1 a 2 function1.sh 4 [ ] $1 : 第一个参数 就是如上的"2&q

Shell 函数、数组与正则表达式

防伪码:白日依山尽,黄河入海流. 5.1  函数 格式: func() { command } 示例 1: #!/bin/bash func() { echo "This is a function." } func # bash test.sh This is a function. Shell 函数很简单,函数名后跟双括号,再跟双大括号.通过函数名直接调用,不加小括号. 示例 2:函数返回值 #!/bin/bash func() { VAR=$((1+1)) return $VAR

第五章 Shell函数与数组

5.1 函数 格式: func() {     command } 示例1: #!/bin/bash func() {     echo "This is a function." } func # bash test.sh This is a function. Shell函数很简单,函数名后跟双括号,再跟双大括号.通过函数名直接调用,不加小括号. 示例2:函数返回值 #!/bin/bash func() {     VAR=$((1+1))     return $VAR     

linux基础学习第十二天(shell函数、数组以及yum使用及编译安装)

2016-08-18 授课内容: shell编程基础(select 循环与菜单.函数) yum管理.定制yum仓库 select 循环与菜单 select variable in list do 循环体命令 done 1.select 循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示PS3 提示符(默认是#?),可以重新定义PS3,等待用户输入 2.用户输入菜单列表中的某个数字,执行相应的命令,用户输入被保存在内置变量REPLY 中 [19:45 [email protec

Shell函数与数组

1.什么是函数 被命名的语句块儿:有开始和结束的边界; begin ...... end 2.Shell语句中的语句块儿 (1).(语句1:语句2:...) (2).{语句1:语句2:...} (3).if else elif while for (4).被命名的语句块儿,函数: 3.Shell函数的定义 函数的要素:(1).函数名称 (2).语句块儿 (3).返回值 (4).参数 Shell函数定义2种基本格式: (1) function 函数名称(){ $1 //若干语句 } 返回值类型:是

2018-4-20 17周3次课 shell函数、数组、告警需求分析

20.16/20.17 shell中的函数 ·函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式: function f_name() { command } 函数必须要放在最前面 ·示例1 #!/bin/bash input() {                        ##定义f_name最好不要和shell里面的关键词冲突     echo $1 $2 $# $0 } input 1 a b $1 $2 第一个,第

shell编程函数与数组

1.shell中函数 (1)shell中函数的语法 语法一: 函数名(){ 指令 return n } 语法二: function 函数名(){ 指令 return n } (2)shell中函数的调用执行 1)直接执行函数名即可,在执行函数时,不要带小括号,函数定义及函数体必须要在执行的函数名前定义. 2)带参数的函数的执行方法:函数名  参数1  参数2 (3)函数带参数的说明 1)在函数体重,位置函数都可以是函数的参数 2)父脚本的参数在函数中则临时地被函数参数所掩盖或隐藏 3)$0比较特