shell数组类似与C语言,数组下标由0起首编号。想要获取数组中的成分要使用下标。

Linux shell数组,linuxshell数组

Linux Shell连串教程之(六)Shell数组,shell数组

本文是Linux Shell系列教程的第(六)篇,更多shell教程请看:Linux Shell系列教程
Shell在编程方面非常强大,其数组功能也非常的完善,今天就为大家介绍下Shell数组的用法。

澳门金沙国际 1

Shell援助一维数组(不扶助多维数组),并且没有限定数组的轻重缓急。

接近与C语言,数组成分的下标由0初始编号。获取数组中的成分要接纳下标,下标能够是整数或算术表明式,其值应不止或等于0。

shell数组

一 、首先定义数组

引言

  在Linux平台上干活,平常索要大家采用shell来编排一些有用、有意义的脚本程序,有时大家会时常采取shell数组。那么,shell中的数组是怎么表现的吗,又是怎么定义的呢?接下去大家挨个的进展讲解,shell中的数组。

壹 、Shell数组的定义

在Shell中,用括号来代表数组,数组成分之间用“空格”分割开。

概念数组的形似格局为:

array_name=(value1 … valuen)

例如:

array_name=(value0 value1 value2 value3)

array_name=(
value0
value1
value2
value3
)

还要还足以独立定义数组的依次分量:

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

能够不采纳连续的下标,而且下标的范围没有限制。

定义

arr_number=(1 2 3 4 5);
arr_string=("abc" "edf" "sss"); 或者 arr_string=('abc' 'edf' 'sss');
#定义索引-值
arry_var[0]="hello"
arry_var[1]="world"

  在shell中,用括号来代表数组,数组元素用“空格”符号分割开。列:

数组的定义

  何为数组?学过电脑编制程序语言的同校都清楚,数组的性状正是一组数据类型相同的聚合(不包含有一部分编程语言建议来的关周详组的定义)。那么shell中数组是怎么定义的啊,大家来看三种数据类型:一是数值类型,二是字符串类型;即便shell本身是弱类型的,但也能够这么区分。

  数值类型的数组:一对括号表示数组,数组兰秋素之间选取“空格”来隔开分离。

  举个列子: 

  arr_number=(1 2 3 4 5);

  字符串类型数组:无差别于,使用一对括号表示数组,个中数组中的成分运用双引号恐怕单引号包罗,同样接纳“空格”来隔断。

  arr_string=(“abc” “edf” “sss”); 或者 arr_string=(‘abc’ ‘edf’
‘sss’);

② 、Shell数组的赋值

直接通过 数组名[下标]
就能够对其进行引用赋值,假诺下标不设有,自动添加新2个数组成分

选取示例:

[[email protected] ~]$ a[1]=100
[[email protected] ~]$ echo ${a[*]} 
1 100 3 4 5

[[email protected] ~]$ a[5]=100     
[[email protected] ~]$ echo ${a[*]}
1 100 3 4 5 100

数组的操作

我们应用数值类型数组arr_number=(1 2 3 4
5)做为源数组实行有关的授课:获取数主管度,读取有些下标的值,对某些下标赋值,删除、分配和替换以及遍历。提多个知识点,我们在shell里面想获取有个别变量的值,使用$符开首,如:$a或许${a}即可。

name=("d" "x" "c")

数组的操作

  大家使用数值类型数组arr_number=(1 2 3 4
5)做为源数组开始展览连锁的上课:获取数老董度,读取某个下标的值,对有个别下标赋值,删除、分配和替换以及遍历。提一个知识点,大家在shell里面想取得某些变量的值,使用$符开首,如:$a或然${a}即可。

  取得数高管度

  arr_length=${#arr_number[*]}或${#arr_number[@]}均可,即形式:${#数组名[@/*]}
可拿到数组的长度。

  读取有些下标的值

  arr_index2=${arr_number[2]},即形式:${数组名[下标]}

Shell种类教程之。  对某些下标赋值

  那里需求提议多个难题:

    第十二个难点是若果该下标元素已经存在,会怎样?

    答:会修改该下标的值为新的内定值。

    例如:arr_number[2]=100,数组被修改为(1 2 100 4 5)

    第三个难题是比方钦点的下标已经超先生过最近数组的深浅,如上述的arr_number的大小为5,钦定下标为10依旧11照旧超过5的任意值会怎么样?

    答:新赋的值被追加到数组的尾巴。

    例如:arr_number[13]=13,数组被修改为(1 2 100 4 5 13)

  删去操作

    清除某些元素:unset arr_number[1],那里清除下标为1的数组;

    清空整个数组:unset arr_number;

  分片访问

    分片访问格局为:${数组名[@或*]:起首下标:停止下标},注意,不包罗甘休下标成分的值。

    例如:${arr_number[@]:1:4},那里分片访问初阶下标为1到停止下标为4的值结果输出为新数组,但不包罗下标为4的值。

  格局替换

    形式为:${数组名[@或*]/模式/新值}

    例如:${arr_number[@]/2/98}

  数组的遍历

    数组遍历大家运用for语句来演示:

    for v in ${arr_number[@]}; do

      echo $v;

    done

三 、Shell数组的读取

读取Shell数组成分值的一般格式是:

${array_name[index]}

valuen=${array_name[2]}

应用举例:

#!/bin/sh
#www.linuxdaxue.com
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"

运作脚本,输出:

$./test.sh
First Index: Zara
Second Index: Qadir

使用@ 或 * 能够取得数组中的全数因素,例如:

${array_name[*]}
${array_name[@]}

行使举例:

#!/bin/sh
#www.linuxdaxue.com
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"

运作脚本,输出:

$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy

收获数主管度

arr_length=${#arr_number[*]}或${#arr_number[@]}均可,即形式:${#数组名[@/*]}
可获得数组的长度。

    其款式为:数组名=(值1 值2 … 值n)

结束语

  通过上述,大家讲课了shell中数组的定义,已经对数组的有关操作有收获长度,读取某下标值,对有些下标赋值,删除、分配和替换以及遍历。通过上述的讲课,希望能够予以读者在Linux平哈博罗内应用shell一些相助,谢谢读者耐心的开卷。

shell数组,linuxshell数组 引言
在Linux平台上行事,常常要求我们采纳shell来编排一些有用、有意义的脚本程序,有时大家会时常选取she…

肆 、Shell数组的去除

直接通过:unset 数组[下标]
能够防去相应的因素,不健忘标,清除整个数据。

行使示例

[[email protected] ~]$ a=(1 2 3 4 5)
[[email protected] ~]$ unset a
[[email protected] ~]$ echo ${a[*]}

[[email protected] ~]$ a=(1 2 3 4 5)
[[email protected] ~]$ unset a[1]   
[[email protected] ~]$ echo ${a[*]} 
1 3 4 5
[[email protected] ~]$ echo ${#a[*]}
4

读取有个别下标的值

arr_index2=${arr_number[2]},即形式:${数组名[下标]}

  也得以独立定义数组的相继分量:例:

5、Shell数组的别的常用操作

对某些下标赋值

此间须求提议三个难点:

先是个难点是只要该下标成分已经存在,会怎样?

答:会修改该下标的值为新的钦点值。

例如:arr_number[2]=100,数组被修改为(1 2 100 4 5)

第三个难题是倘诺钦定的下标已经超先生过近期数组的尺寸,如上述的arr_number的大小为5,钦赐下标为10要么11或许超过5的任意值会什么?

答:新赋的值被追加到数组的尾巴。

例如:arr_number[13]=13,数组被涂改为(1 2 100 4 5 13)

name[0]=1
name[1]=2
name[2]=3

1)Shell数老总度

用${#数组名[@或*]} 能够获取数主任度,示例如下:

# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}

除去操作

铲除某些成分:unset arr_number[1],那里清除下标为1的数组;

清空整个数组:unset arr_number;

贰 、读取数组

2)Shell数组的分片

直接通过 ${数组名[@或*]:开端地方:长度}
切片原先数组,再次来到是字符串,中间用“空格”分开,由此只要加上”()”,将赢得切片数组。

行使举例

[[email protected] ~]$ a=(1 2 3 4 5)
[[email protected] ~]$ echo ${a[@]:0:3}
1 2 3
[[email protected] ~]$ echo ${a[@]:1:4}
2 3 4 5
[[email protected] ~]$ c=(${a[@]:1:4})
[[email protected] ~]$ echo ${#c[@]}
4
[[email protected] ~]$ echo ${c[*]} 
2 3 4 5

分片访问

分片访问方式为:${数组名[@或*]:伊始下标:甘休下标},注意,不包蕴甘休下标成分的值。

例如:${arr_number[@]:1:4},那里分片访问从下标为1开始,成分个数为4。

  读取数组成分值的貌似格式是:

3)Shell数组的轮换

数组的交替方法是:${数组名[@或*]/查找字符/替换字符}
该操作不会变动原先数组内容,假使须要修改,能够看上面例子,重新定义数据。

行使举例

[[email protected] ~]$ a=(1 2 3 4 5)    
[[email protected] ~]$ echo ${a[@]/3/100}
1 2 100 4 5
[[email protected] ~]$ echo ${a[@]}
1 2 3 4 5
[[email protected] ~]$ a=(${a[@]/3/100}) 
[[email protected] ~]$ echo ${a[@]}     
1 2 100 4 5

好了,有关Shell数组的情节就一点都不大我们介绍到这里,希望大家多多演习,熟知明白。

越多shell教程请看:Linux Shell类别教程


正文固定链接:linux大学网_Linux学习_Shell_嵌入式Linux–Linux
Shell类别教程之(六)Shell数组

Shell系列教程之(六)Shell数组,shell数组
本文是Linux Shell种类教程的第(六)篇,越来越多shell教程请看:Linux
Shell体系教程 Shell在编制程序方面…

形式替换

形式为:${数组名[@或*]/模式/新值}

例如:${arr_number[@]/2/98}

  ${数组名[下标]}

数组的遍历

数组遍历大家接纳for语句来演示:

for v in ${arr_number[@]澳门金沙国际 ,}; do

echo $v;

done

绝超越五分之三剧情出自:https://www.cnblogs.com/Joke-Shi/p/5705856.html

  例:

echo ${name[1]}

  若选择  @  符号能够取出全数的要素,例:

echo ${name[@]}

能够赢获得数组的长度,length:例:

#获取到数组元素的长度
length=${#name[@]}
echo $length
#或者使用* 例
length=${#name[*]}
echo $length
#取得数组单个元素的长度
length=${#name[2]}
echo $length

 

相关文章