shell脚本定义并使用字典变量

一、技术知识介绍

  • 前言

    一直以为shell脚本中没有字典变量,今天搜索了一下发现高版本的shell中已经有支持字典变量了。

  • 声明字典类型:

    declare -A dict
    

    这里一定要-A来声明,-a只能用来声明数组类型。

  • 字典赋初值

    dic=([key1]="value1" [key2]="value2" [key3]="value3")
    
  • 字典动态赋值

    dic['key']=value
    
  • 打印指定key的value

    echo ${dic['key']}
    
  • 打印所有key值

    echo ${!dic[*]}
    
  • 打印所有value

    echo ${dic[*]}
    
  • 遍历key值

    for key in $(echo ${!dic[*]})
    do
        echo "$key : ${dic[$key]}"
    done
    

二、应用实例

  • 统计词频 WordCount
    #! /bin/sh
    #输入格式为一行一个单词
    
    #定义字典类型变量
    declare -A dict
    
    #从标准输入读取
    while read word
    do
        #若key为word的变量不存在,则为未定义,即第一次遇到此word,则将此word加入字典并设置其value为1。,否则自增value值
        if [ ! -n dict[${word}] ];then
            dict[${word}]=1
        else
            ((dict[${word}]++))
        fi
    done
    #打印统计结果
    echo -e "word\t\tcount"
    for key in $(echo ${!dict[*]})
    do
        echo -e "$key\t\t${dict[$key]}"
    done
    
    
  • 运行结果
    [hadoop@master workspace]$ cat test.txt 
    123
    123
    123
    1
    1
    1
    2
    123
    1
    2
    [hadoop@master workspace]$ cat test.txt | sh sh.sh 
    word        count
    123     4
    1       4
    2       2
    
    
    可见,统计结果正确。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 11,246评论 0 10
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,959评论 0 5
  • 一、shell脚本介绍 1.1 开头(环境使用shebang机制) #!/bin/bash 必须写在文件首行 符号...
    优果馥斯阅读 8,761评论 0 1
  • 流程控制 if 单条件 双分支 多分支 case case支持glob风格的通配符: *: 任意长度任意字符?: ...
    毛利卷卷发阅读 4,127评论 0 1
  • “史彦鹏擅隶书,自己的学生却无一人写隶书”,相较于早已被认可的书法功力,如今史彦鹏个性十足的教育方法更为人们所津津...
    猫头mt阅读 5,319评论 4 9

友情链接更多精彩内容