zoukankan      html  css  js  c++  java
  • shell 3数组

    shell支持一维数组(不支持多维数组),并且没有限定数组的大小。

    1. 定义数组

    shell中,用括号来表示数组,数组元素用空格分隔,下标从0开始
    方式1:

    数组名=(值1 值2...值n),如array_name=(value0 value1 value2)

    方式2:

    array_name=(value0 value1 value2 )

    方式3 :单独定义数组的值

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

    2.读取数组

    • 获取数组某个元素的值({数组名[下标]} 如){arrayName[0]}
    • 使用@可以获取数组中的所有元素({数组名[@]},如){arrayName[@]}
    array=(1 3 4 6)
    #打印第一个元素
    echo ${array[0]}    #1
    #打印全部元素
    echo ${array[@]}    #1 3 4 6
    echo ${array[*]}    #1 3 4 6
    

    3. 获取数组的长度

    • 获取数组长度的方法和获取字符串长度的方法相同:
    length=${#数组名[@]}或length=${#数组名[*]}
    
    • 获取数组某元素的长度:length=${#数组名[下标]}
    #!/bin/sh
    list1=("east" "west" "north" "south")
    list2=('one'
     'two' 
     'three' 
     'four'
    )
    list3[0]="陆风"
    list3[1]="江铃"
    list3[3]="长安"
    #打印list1的所有元素
    echo "list1元素: "${list1[@]}	#list1元素: east west north south
    #打印list2的长度
    echo "list2长度:"${#list1[@]}	#list2长度:4
    #打印list3的第一个元素及其长度
    echo "list3第1个元素: "${list3[0]} ${#list3[0]}	#list3第1个元素: 陆风 2
    #打印数组不存在的元素
    echo "list3第3个元素: "${list3[2]} ${#list3[2]}	#list3第3个元素:  0
    

    4. shell数组中*和@的区别

    *加上双引号,会被当成一串字符串处理
    @加上双引号,依然被当作数组处理

    #!/bin/sh
    list_a=(1 2 'a' b)
    echo "--{array[@]}--"
    for i in ${list_a[@]};do
    	echo $i
    done
    echo "--{array[*]}--"
    for i in ${list_a[*]};do
    	echo $i
    done
    echo "--"{array[@]}"--"
    for i in "${list_a[@]}";do
    	echo $i
    done
    echo "--"{array[*]}"--"
    for i in "${list_a[*]}";do
    	echo $i
    done
    

    结果:

    --{array[@]}--
    1
    2
    a
    b
    --{array[*]}--
    1
    2
    a
    b
    --"{array[@]}"--
    1
    2
    a
    b
    --"{array[*]}"--
    1 2 a b
    

    5.变量在数组中的使用

    数组里添加变量,必须要加$,否则添加的是一个字符串
    使用变量作为下标去获取value,变量加不加$都可以

    #!/bin/sh
    strA="Tom Cat"
    a=5
    #传入不存在的变量,数组不会增加
    #传入带空格的变量,会将变量按空格分拆添加到数组中
    list_a=(1 2 'a' b $c $strA StrDarle)
    echo ${#list_a[@]}
    #获取第6个和第7个元素
    echo "第6个元素:"${list_a[$a]} "第7个元素" ${list_a[a+1]} 
    for i in `seq 1 ${#list_a[@]}`;do
    	echo "第${i}个元素:"${list_a[i-1]}
    done
    

    结果

    7
    第6个元素:Cat 第7个元素 StrDarle
    第1个元素:1
    第2个元素:2
    第3个元素:a
    第4个元素:b
    第5个元素:Tom
    第6个元素:Cat
    第7个元素:StrDarle
    
  • 相关阅读:
    如何在SQLite中创建自增字段?
    Windows XP平台下编译boost[1.47及以上]
    智能指针的向下转型
    采用Boost::filesystem操作文件
    CodeSmith访问数据库
    std::string的一些操作
    PDF加入内嵌字体
    悟空和唐僧的对话
    收获和教训的一天配置ds1401
    vxworks的一个changlog
  • 原文地址:https://www.cnblogs.com/csj2018/p/9541595.html
Copyright © 2011-2022 走看看