shell 数组详解

数组

数组的介绍

平时的定义a=1,b=2,c=3;变量如果多了,再一个一个定义很费劲,并且取变量也很费劲。

简单说,数组就是相同数据类型的元素按一定顺序排序的集合

数组就是把有限的类型相同的变量用一个名字命名,然后用不同的编号区分他们的变量的集合,这个名字就是数组名,编号成为数组的下标,组成数组的各个变量成为数组的分量,也称为数组的元素。

由于有了数组,就可以用相同的名称引用一系列的变量,并用数组(索引)来识别他们,在许多场合,使用数组可以缩短和简化程序的开发,因为可以利用索引值设计一个循环,高效处理多种情况

数组的定义和增删改查

1、数组的定义

方法1: array_name=(value0 value1 value2 value3)

方法2:

array_name=(

value0

value1

value2

value3

)

方法3:

array_name[0]=value0

array_name[1]=value1

array_name[2]=value2

2、获取数组的长度

[[email protected] ~]# arr=(1 2 3 4)

[[email protected] ~]# echo ${#arr[@]}

4

[[email protected] ~]# echo ${#arr[*]}

4

3、获取数组元素的值

${array_name[@]} 所有元素的值

${array_name[*]} 所有元素的值

${array_name[i]}         单个元素的值,i是下标

[[email protected] ~]# echo ${arr[0]}

1

[[email protected] ~]# echo ${arr[1]}

2

[[email protected] ~]# echo ${arr[2]}

3

[[email protected] ~]# echo ${arr[3]}

4

[[email protected] ~]# echo ${arr[@]}

1 2 3 4

[[email protected] ~]# echo ${arr[*]}

1 2 3 4

[[email protected] ~]#

[[email protected] ~]# for ((i=0;i<${#arr[*]};i++));do echo ${arr[$i]};done

1

2

3

4

[[email protected] ~]#

==============

逐一读出数组的值

for item in ${myarray[*]};

do

echo $item;

done;

[[email protected] ~]# arr=(1 2 3 4)

[[email protected] ~]#  for n in ${arr[@]} ;do  echo $n ;done

1

2

3

4

[[email protected] ~]#

4、数组增加元素,数组赋值都可以

###array_name[n]=value

[[email protected] ~]# for n in `seq 0 1 3` ;do  echo ${arr[$n]} ;done

1

2

3

4

[[email protected] ~]# echo ${#arr[@]}

4

[[email protected] ~]# arr[4]=5

[[email protected] ~]# echo ${#arr[@]}

5

[[email protected] ~]# for n in `seq 0 1 4` ;do  echo ${arr[$n]} ;done

1

2

3

4

5

5、数组删除

删除数组的某个元素: unset array_name[n]

或者: ${array_name[@或者*]#字符}   从左边开始匹配删除最短

${array_name[@或者*]##字符}   从左边开始匹配删除最长

${array_name[@或者*]%字符}   从右边开始匹配删除最短

${array_name[@或者*]%%字符}   从右边开始匹配删除最长

删除整个数组: unset array_name

[[email protected] ~]# echo ${arr[4]}

5

[[email protected] ~]# unset arr[4]

[[email protected] ~]# echo ${arr[4]}

[[email protected] ~]#

############################

[[email protected] ~]# unset arr

[[email protected] ~]# echo ${arr[3]}

[[email protected] ~]# echo ${#arr[@]}

0

[[email protected] ~]#

6、数组的截取和替换(和变量子串的替换很像)

截取

[[email protected] ~]# arr=(a b c d e f g)

[[email protected] ~]# echo ${arr[@]:1:3}         ##${arr[@]:截取的开始:截取长度}

b c d

[[email protected] ~]# echo ${arr[@]:3:2}

d e

[[email protected] ~]#

替换

[[email protected] ~]# arr=(a b c d e f g)

[[email protected] ~]# echo ${arr[@]/a/xiaogao}

xiaogao b c d e f g

[[email protected] ~]# echo ${arr[0]}

a

[[email protected] ~]#

调用方法: ${数组名[@或者*]/匹配的字符/替换的字符},改操作不会更改原理数组的内容,如果需要修改,那就需要重新定义

时间: 2024-08-09 09:39:19

shell 数组详解的相关文章

Linux主要shell命令详解(上)

[摘自网络] kill -9 -1即实现用kill命令退出系统 Linux主要shell命令详解 [上篇] shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash.本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性. 什么是shell Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序,如果把

linux主要shell命令详解

Linux主要shell命令详解 shell是用户和Linux操作系统之间的接口.Linux中有多种shell,其中缺省使用的是Bash.本章讲述了shell的工作原理,shell的种类,shell的一般操作及Bash的特性. 什么是shell Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命令语言.命令解释程序及程序设计语言的统称. shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层.当从sh

BIT 树状数组 详解 及 例题

(一)树状数组的概念 如果给定一个数组,要你求里面所有数的和,一般都会想到累加.但是当那个数组很大的时候,累加就显得太耗时了,时间复杂度为O(n),并且采用累加的方法还有一个局限,那就是,当修改掉数组中的元素后,仍然要你求数组中某段元素的和,就显得麻烦了.所以我们就要用到树状数组,他的时间复杂度为O(lgn),相比之下就快得多.下面就讲一下什么是树状数组: 一般讲到树状数组都会少不了下面这个图: 下面来分析一下上面那个图看能得出什么规律: 据图可知:c1=a1,c2=a1+a2,c3=a3,c4

算法学习笔记 KMP算法之 next 数组详解

最近回顾了下字符串匹配 KMP 算法,相对于朴素匹配算法,KMP算法核心改进就在于:待匹配串指针 i 不发生回溯,模式串指针 j 跳转到 next[j],即变为了 j = next[j]. 由此时间复杂度由朴素匹配的 O(m*n) 降到了 O(m+n), 其中模式串长度 m, 待匹配文本串长 n. 其中,比较难理解的地方就是 next 数组的求法.next 数组的含义:代表当前字符之前的字符串中,有多大长度的相同前缀后缀,也可看作有限状态自动机的状态,而且从自动机的角度反而更容易推导一些. "前

adb shell 命令详解,android

http://www.miui.com/article-275-1.html http://noobjava.iteye.com/blog/1914348 adb shell 命令详解,android 博客分类: android 常用:1.进入模拟器的shell模式 :  adb shell 2.安装应用程序:  adb install -r 应用程序.apkadb installadb install <apk文件路径> :这个命令将指定的apk文件安装到设备上adb install  -r

shell script详解

shell script详解 定义 利用shell的功能写的一个"程序"(program),这个程序是纯文本文件,可以将一些shell的语法与命令(含外部命令)写在里面,搭配正则表达式.管道命令与数据流重定向. 用途 自动化管理.管理系统.入侵检测.连续命令单一化.简单的数据处理.跨平台使用等 规范 #!/bin/bash 声明这个文件内的语法是bash的语法,则系统会加载bash的相关配置文件来执行下面的命令 # Program: #       This program shows

(转)awk数组详解及企业实战案例

awk数组详解及企业实战案例 原文:http://www.cnblogs.com/hackerer/p/5365967.html#_label03.打印数组:1. [[email protected] test]# awk 'BEGIN{array[1]="zhurui";array[2]="zhuzhu";for(key in array) print key,array[key]}'2. 1 zhurui3. 2 zhuzhu4. [[email protect

【shell】Linux shell 位置变量详解

Linux shell 位置变量详解 什么是位置变量? 简单来说,在用户运行脚本的同时输入参数,这些参数所对应的变量称为位置变量. 例子: [[email protected] scripts]# ./ping.sh www.baidu.com Host www.baidu.com is up. [[email protected] scripts]# ./ping.sh klsdjfkldjfkldf.kljjfdkljfdljds.com Host klsdjfkldjfkldf.kljjf

“全栈2019”Java第二十八章:数组详解(上篇)

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第二十八章:数组详解(上篇) 下一章 "全栈2019"Java第二十九章:数组详解(中篇) 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组"