• Linux Shell 中数组的语法及应用


    #!/bin/sh
    #
    # 数组的声明与初始化方法
    # 先声明后赋值:
    declare -a array
    array=(one two three)

    # 声明并初始化:
    array_1=(1 2 3 four)

    array_2=(
    1
    2
    3
    four
    )

    array_3[0]=1
    array_3[1]=2
    array_3[2]=3
    array_3[3]=four

    # 数组元素的引用 ${array_name[index]}
    echo "array_1[0]= ${array_1[0]}"    
    echo "array_3[3]= ${array_3[3]}"
    echo "======================================="

    # 数组的引用方法 ${array_name[*]} 或 ${array_name[@]}
    echo "First Method: ${array_1[*]}"       
    echo "Second Method: ${array_2[*]}"
    echo "Third Method: ${array_3[@]}"
    echo "======================================="

    # $array_name 可直接代表${array_name[0]}
    echo $array
    echo $array[0]
    echo ${#array}
    echo "======================================="

    # 增加或修改元素(值)
    array[4]='hello'      #增加
    array[1]='shells'     #修改
    echo ${array[*]}
    echo ${array[10]}     #空值
    echo "======================================="

    # 删除元素或数组
    unset array[0]
    echo ${array[*]}
    unset array              #删除数组
    echo ${array[*]}
    echo "======================================="

    # 切片访问  ${array_name[*]:startindex:endindex} or ${array_name[*]:startindex:endindex}     即 array_name[startindex,endindex)
    echo ${array_1[*]:1:4}
    echo ${array_1[@]:1:7}      #越界显示为空
    echo ${array_1[*]:2}          #>=2
    echo ${array_1[*]::4}         #<4

    echo "======================================="

    # 模式替换(匹配并替换)  ${array_name[*]/oldchar/newchar}
    array_4=(123 "231" '81o')
    echo ${array_4[*]}
    echo ${array_4[*]/1/replace}
    echo "======================================="


    # 数组的长度(元素个数)
    arraylength1=${#array_1[@]}
    arraylength2=${#array_2[*]}
    echo $arraylength1
    echo $arraylength2
    echo "======================================="

    # 元素的长度
    elementlength3=${#array_3[3]}
    elementlength3_1=${#array_3[1]}
    echo $elementlength3
    echo $elementlength3_1
    echo "======================================="

    # 数组的应用(遍历)
    for (( n=0; n<${#array_1[@]}; n++ )); do
        echo ${array_1[$n]}
    done
    echo "======================================="

    for I in ${array_1[*]}; do
        echo $I
    done
    echo "======================================="

    # 特殊数组(空格作为元素的分隔符)
    for I in `ls -a ~`; do
        echo $I
    done

    for I in `head -n 10 /etc/passwd | cut -d: -f1`; do
        echo "Username: $I"
    done
    echo "xxxxxxxxxxxx"

    ARRAY=`head -n 10 /etc/passwd | cut -d: -f1`
    for I in $ARRAY; do
        echo "Username1: $I"
    done

    # 参考 http://blog.csdn.net/zhuying_linux/article/details/6778877

    源码:

      1 #!/bin/sh
      2 #
      3 
      4 # 数组的声明与初始化方法
      5 # 先声明后赋值:
      6 declare -a array
      7 array=(one two three)
      8 
      9 # 声明并初始化:
     10 array_1=(1 2 3 four)
     11 
     12 array_2=(
     13 1
     14 2
     15 3
     16 four
     17 )
     18 
     19 array_3[0]=1
     20 array_3[1]=2
     21 array_3[2]=3
     22 array_3[3]=four
     23 
     24 # 数组元素的引用 ${array_name[index]}
     25 echo "array_1[0]= ${array_1[0]}"    
     26 echo "array_3[3]= ${array_3[3]}"
     27 echo "======================================="
     28 
     29 # 数组的引用方法 ${array_name[*]} 或 ${array_name[@]}
     30 echo "First Method: ${array_1[*]}"       
     31 echo "Second Method: ${array_2[*]}"
     32 echo "Third Method: ${array_3[@]}"
     33 echo "======================================="
     34 
     35 # $array_name 可直接代表${array_name[0]}
     36 echo $array
     37 echo $array[0]
     38 echo ${#array}
     39 echo "======================================="
     40 
     41 # 增加或修改元素(值)
     42 array[4]='hello'      #增加
     43 array[1]='shells'     #修改
     44 echo ${array[*]}
     45 echo ${array[10]}     #空值
     46 echo "======================================="
     47 
     48 # 删除元素或数组
     49 unset array[0]
     50 echo ${array[*]}
     51 unset array              #删除数组
     52 echo ${array[*]}
     53 echo "======================================="
     54 
     55 # 切片访问  ${array_name[*]:startindex:endindex} or ${array_name[*]:startindex:endindex}     即 array_name[startindex,endindex)
     56 echo ${array_1[*]:1:4}
     57 echo ${array_1[@]:1:7}      #越界显示为空
     58 echo ${array_1[*]:2}        #>=2
     59 echo ${array_1[*]::4}       #<4
     60 
     61 echo "======================================="
     62 
     63 # 模式替换(匹配并替换)  ${array_name[*]/oldchar/newchar}
     64 array_4=(123 "231" '81o')
     65 echo ${array_4[*]}
     66 echo ${array_4[*]/1/replace}
     67 echo "======================================="
     68 
     69 
     70 # 数组的长度(元素个数)
     71 arraylength1=${#array_1[@]}
     72 arraylength2=${#array_2[*]}
     73 echo $arraylength1
     74 echo $arraylength2
     75 echo "======================================="
     76 
     77 # 元素的长度
     78 elementlength3=${#array_3[3]}
     79 elementlength3_1=${#array_3[1]}
     80 echo $elementlength3
     81 echo $elementlength3_1
     82 echo "======================================="
     83 
     84 # 数组的应用(遍历)
     85 for (( n=0; n<${#array_1[@]}; n++ )); do
     86     echo ${array_1[$n]}
     87 done
     88 echo "======================================="
     89 
     90 for I in ${array_1[*]}; do
     91     echo $I
     92 done
     93 echo "======================================="
     94 
     95 # 特殊数组(空格作为元素的分隔符)
     96 for I in `ls -a ~`; do
     97     echo $I
     98 done
     99 
    100 for I in `head -n 10 /etc/passwd | cut -d: -f1`; do
    101     echo "Username: $I"
    102 done
    103 echo "xxxxxxxxxxxx"
    104 
    105 ARRAY=`head -n 10 /etc/passwd | cut -d: -f1`
    106 for I in $ARRAY; do
    107     echo "Username1: $I"
    108 done
    109 
    110 # 参考 http://blog.csdn.net/zhuying_linux/article/details/6778877
    array.sh
  • 相关阅读:
    iPad开发学习之一环境搭建和基本概念
    介绍一款网页布局设计的工具Balsamiq Mockups
    JS怎么判断是哪个元素触发了点击事件?
    古希腊神话剧本
    WPS知识点
    PPT动画中点击、之前、之后的区别
    JS给网页中的选项添加标点
    调音师、调灯师
    输入密码后,可以修改指定列,其余信息不允许修改
    HiveQL详解
  • 原文地址:https://www.cnblogs.com/ant-colonies/p/6438112.html
Copyright © 2020-2023  润新知