`

Shell数组:shell数组的定义、数组长度

阅读更多
Shell在编程方面比Windows批处理强大很多,无论是在循环、运算。

bash支持一维数组(不支持多维数组),并且没有限定数组的大小。类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。
定义数组

在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
可以不使用连续的下标,而且下标的范围没有限制。
读取数组

读取数组元素值的一般格式是:
    ${array_name[index]}
例如:
valuen=${array_name[2]}

举个例子:
#!/bin/sh
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
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

获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同,例如:
复制纯文本新窗口

# 取得数组元素的个数
length=${#array_name[@]}

# 或者
length=${#array_name[*]}

# 取得数组单个元素的长度
lengthn=${#array_name[n]}
分享到:
评论

相关推荐

    浅谈shell数组的定义及循环

    #定义方法一 数组定义为空格分割 arrayWen=(a b c d e f) #定义方法二 arrayXue[0]=m arrayXue[1]=n arrayXue[2]=o arrayXue[3]=p arrayXue[4]=q arrayXue[5]=r #打印数组长度 echo ${#arrayWen[@]} #for 循环遍历 ...

    Shell 数组与关联数组详解及实例代码

    Shell 数组与关联数组 1.数组 1.1. 数组定义 一对圆括号表示数组,数组元素...长度:用${#数组名[@或*]} 可以得到数组长度 xiaosi@Qunar:~$ echo ${#a[@]} 3 xiaosi@Qunar:~$ echo ${#a[*]} 3 获取元素:用${数组名

    Linux shell数组建立和使用技巧

    数组定义  [chengmo@centos5 ~]$ a=(1 2 3 4 5)  [chengmo@centos5 ~]$ echo $a  1  一对括号表示是数组,数组元素用“空格”符号分割开。  2.数组读取与赋值  得到长度:  [chengmo@centos5 ~]$ echo...

    shell中的数组操作小结和冒泡排序实现脚本分享

    shell数组介绍: 代码如下: //数组变量定义: $ arr=(1 3 6 8 2 5 9 0 7 4) // 默认获取第一个元素 $ echo $arr // 通过下标访问,下面取的数组第二个元素,shell数组下标是从0开始 $ echo ${arr[1]}  // 访问整个...

    Linux Shell 数组的创建及使用技巧

    1.数组定义 [chengmo@centos5 ~]$ a=(1 2 3 4 5) [chengmo@centos5 ~]$ echo $a 一对括号表示是数组,数组元素用“空格”符号分割开。 2.数组读取与赋值 得到长度: [chengmo@centos5 ~]$ echo ${#a[@]} 5 用${...

    Linux shell数组建立及使用技巧

    数组定义  [chengmo@centos5 ~]$ a=(1 2 3 4 5)  [chengmo@centos5 ~]$ echo $a  1  一对括号表示是数组,数组元素用“空格”符号分割开。  2.数组读取与赋值  得到长度:  [chengmo@centos5 ~]$ echo...

    Linux Shell 数组建立及使用技巧

    1.数组定义 [chengmo@centos5 ~]$ a=(1 2 3 4 5) [chengmo@centos5 ~]$ echo $a 一对括号表示是数组,数组元素用“空格”符号分割开。 2.数组读取与赋值 得到长度: [chengmo@centos5 ~]$ echo ${ #a[@]} 用${#数组...

    Shell中创建序列和数组(list、array)的方法

    主要介绍了Shell中创建序列和数组(list、array)的方法,本文讲解了seq方法生成以及通过内部{begin..end}生成法,需要的朋友可以参考下

    数组中五个数的最大值

    C#数组中五个数的最大值.cs

    Python实现希尔排序的示例代码.py

    希尔排序:代码定义了一个名为`shell_sort`的函数,接受一个待排序的数组作为参数。在函数内部,首先确定初始的间隔`gap`为数组长度的一半,然后进行循环直到`gap`为0。 #在每一次循环中,使用插入排序的思想对数组...

    Linux高级bash编程

    在1913年的韦氏词典中查找定义 12-17. 检查列表中单词的正确性 12-18. 转换大写: 把一个文件的内容全部转换为大写. 12-19. 转换小写: 将当前目录下的所有文全部转换为小写. 12-20. Du: DOS 到 UNIX 文本文件的转换....

    Advanced Bash-Scripting Guide <>

    26. 数组 27. /dev 和 /proc 27.1. /dev 27.2. /proc 28. 关于Zeros 和Nulls 29. 调试 30. 选项 31. Gotchas 32. 脚本编程风格 32.1. 非官方的Shell 脚本风格 33. 杂项 33.1. 交互式和非交互式的shells 和脚本 33.2....

    宋劲彬的嵌入式C语言一站式编程

    1.2. 取字符串的长度 1.3. 拷贝字符串 1.4. 连接字符串 1.5. 比较字符串 1.6. 搜索字符串 1.7. 分割字符串 2. 标准I/O库函数 2.1. 文件的基本概念 2.2. fopen/fclose 2.3. stdin/stdout/stderr 2.4. errno与perror...

    通过浏览器拉起应用程序(私有协议)-易语言

    , 9,取文本长度 ( aa[ 1] ) - 9) , 0, ,) 返回 ( 0) ' 返回值被忽略。 用firefox来看一下执行结果。 个别浏览器会对传入的中文参数进行url编码,例如chrome,如果你的程序中未判断参数编码,就会造成如下状况,如下...

    common-scripts:这是程序员最常用的脚本

    参见:语法级别bash syntax编写脚本过程中,常用的或必须掌握的语法点有变量,声明、赋值、使用字符串,单引号 / 双引号(区别)、位置、截取、拼接数组,定义、赋值、取值、长度、遍历参数,传递、取值、特殊字符处理...

    delphi 开发经验技巧宝典源码

    0036 如何编译器会提示数组太大时的处理技巧 25 0037 如何对超大数字进行计算 25 0038 强类型的定义及使用 25 2.2 类、函数、重载 25 0039 在函数的定义中正确使用var 25 0040 如何实现类的转形 26 0041...

Global site tag (gtag.js) - Google Analytics