代码编织梦想

在Shell中一个变量只能有一个值,但是通过定义数组变量可以赋予多个值,数组定义方式和变量基本一样。数组在工作中多用于做统计,思路就是把需要统计的字段放到索引中。Shell中的数组分为了普通数组和关联数字,普通数组的下标索引只能是数字,而关联数字可以自定义字符串。

一、数组的定义

1、普通数组

一次赋予多个值(元素)给数组的方式

afcd584d67b8c0f083ba50d626981dc8.png

IP=("192.168.100.10" "192.168.100.20" shell python) #定义一个包含4个值的数组,用空格分隔每个元素值

echo $IP #默认显示数组中第一个元素值

echo ${IP[1]} #数组中第一个元素值的索引为0,这里1代表显示第二个元素192.168.100.20,以此类推

echo ${IP[@]} #显示数组中的每个元素值

echo ${!IP[@]} #显示数组中的出每个索引下标

echo ${IP[*]} #也是显示数组中的所有元素

echo ${#IP} #显示第一个元素的字符个数

echo ${#IP[@]} #显示数组元素值的个数

还可以一次赋一个值给数组,方括号内就是索引下标:

array1[0]=python

array1[1]=php

array1[2]=shell

2、关联数组

关联数组的索引可以自定义为字符串,不再必须是整数,但是必须提前声明关联数组,否则Shell会把这个变量作为普通数组处理

dclare -A info #声明是关联数组,否则shell只认识普通数组

info=([name]=tom [age]=18 [sex]=male) #和普通数组定义方式有区别

echo ${info[name]}

二、数组使用示例

1、用数组统计不同shell的数量:

declare -A shells

while read line

do

type=`echo $line |awk -F: '{print $NF}'`

let shells[$type]++

done

for i in ${!shells[@]} #遍历索引

do

echo "$i: ${shells[$i]}"

done

2、统计TCP状态,比如看看有多少用户在请求我们的80端口:

declare -A status

type=`ss -an |grep :80 | awk '{print $2}'`

for i in $type

do

let status[$i]++

done

for j in ${!status[@]}

do

echo "$j: ${status[$j]}"

done

linux教程——shell中字符串与数组操作实例-爱代码爱编程

Shell中字符串与数组操作实例 前言 本篇主要介绍了介绍在Shell脚本中对于字符串的处理,数据变量的定义与使用。 字符串截取及切割 子串截取的三种用法: ${var:起始位置:长度}expr substr “$

linux脚本学习_字符串数组_graceyongqi的博客-爱代码爱编程

2018.3.5更新:demo2添加使用awk的另一种方法 mark: shell语言很方便的一点是,变量$x 外层套一个括号() 这个变量就直接变成数组了! 获取数组长度  ${#arr[@]} 获取数组元素   ${arr[i]} shell中原始分隔符为 空格,变量名为IFS,很方便的一点是,可以临时改掉分隔符,打到其他符号分割字符串的目的,记得最后

shell脚本——字符串 数组_杰儿__er的博客-爱代码爱编程_shell 字符数组

字符串 字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。 单引号 str='this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;单引号字串中不能出现单引号(对单引号使用转义符后也不行)。 双引号 your_name='qinjx' str="Hello,

记linux shell的两个小技巧:shell数组和字符串判断-爱代码爱编程

  最近在使用shell写脚本的时候,想实现python中两个很简单的功能:1:判断一个字符串是否包含另一个字符串。2:怎么用实现python的列表功能。这里跟大家分享一下。 1:判断一个字符串是否包含另一个字符串: string="abcdefg" if [[ "$string" =~ "abc" ]];then   echo "do som

shell中数组的定义方法_芒果布丁啊的博客-爱代码爱编程_shell定义数组

一、shell中数组的几种定义方式: 方法一: [root@localhost ~]# array=(1 2 3) [root@localhost ~]# echo ${array[*]} 1 2 3 方法二: [root@localhost ~]# array=([1]=one [2]=two [3]=three) [root@localhost

linux 字符串数组初始化,Linux Shell 数组Array 的定义与操作-Fun言-爱代码爱编程

Linux平台上工作,经常需要使用shell来编写一些有用、有意义的脚本程序。 shell数组并不常用到,因为它仅支持弱类型的一维数组,但在某些情况下,它非常的有用。 那么,shell中的数组是怎么定义的呢? 1、数组的定义 学过计算机编程语言的同学都知道,数组的特性就是一组数据类型相同的集合(不包括有一些编程语言提出来的关联数组的概念)。那么

linux 字符串数组初始化,linux shell 数组建立及使用技巧-爱代码爱编程

linux shell在编程方面比windows 批处理强大太多,无论是在循环、运算。已经数据类型方面都是不能比较的。 下面是个人在使用时候,对它在数组方面一些操作进行的总结。 1.数组定义 [chengmo@centos5 ~]$ a=(1 2 3 4 5) [chengmo@centos5 ~]$ echo $a 1 一对括号表示是数组,

linux 字符串数组初始化,Linux命令行 – 数组-爱代码爱编程

在上一章中,我们查看了 shell 怎样操作字符串和数字的。目前我们所见到的数据类型在计算机科学圈里被 称为标量变量;也就是说,只能包含一个值的变量。 在本章中,我们将看看另一种数据结构叫做数组,数组能存放多个值。数组几乎是所有编程语言的一个特性。 shell 也支持它们,尽管以一个相当有限的形式。即便如此,为解决编程问题,它们是非常有用的。 什么

linux 字符串数组定义,Shell脚本(一) -- 开始、变量、字符串、数组-爱代码爱编程

一、什么是Shell Shell编程就是对一堆Linux命令的逻辑化处理 应用 例:举个简单的例子,我们做pythonweb开发的,在以前,如果要在本地将程序打包,然后部署到远程服务器(抛开现在的ci, 原始的方法), 我们以前的做法通常会经历如下几个步骤: 拉取最新代码(git pull) 编译打包 上传并部署到远程服务器 每次打包都要

linux中利用脚本编写数组,在Bash脚本中创建和使用数组方法总结-爱代码爱编程

在Bash中定义一个数组 有两种方法可以在bash脚本中创建新数组。第一个是使用declare命令来定义一个Array。此命令将定义名为test_array的关联数组。 $ declare -a test_array 还可以通过分配元素来创建数组。 $ test_array=(apple orange lemon) 访问数组元素 与其他编程

linux 添加字符串数组中,Linux-Shell基础(变量,字符串,数组)-爱代码爱编程

一. 什么是shell shell是一个用C语言编写的程序,它是用户使用Linux的桥梁,又是一种程序设计语言。 Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。 shell脚本是一种shell编写的脚本程序 常见的shell种类 Bourne Shell(/usr/bin/sh或/bin/s

在linux中定义数组的方法,shell中使用数组-爱代码爱编程

1.  定义数组: 可以有三种方法来定义一个数组: 1)直接使用圆括号:[root@test1 ~]# array1=(a b c d e f) 2)通过在圆括号中指定下标来定义,默认下标从0开始:[root@test1 ~]# array2=([0]='a0' [1]='a1' [2]='a2' [3]='a3') 3)不使用圆括号,数组不用