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

    from: http://www.jb51.net/article/34322.htm

    bash shell只支持一维数组,但参数个数没有限制。

    声明一个数组:
    declare -a array
    (其实不用声明,按数组方式直接赋值给变量即可,BASH就知道那是数组)

    数组赋值:
    (1) array=(var1 var2 var3 ... varN)
    (2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN)
    (3) array[0]=var1
        arrya[1]=var2
        ...
        array[n]=varN

    计算数组元素个数:
    ${#array[@]}  或者  ${#array[*]}

    BASH的特殊参数 @ 和 * 都表示“扩展位置参数,从1开始”,但形式稍有差异,但在数组里使用好像是可以通用的。

    引用数组:

    复制代码 代码如下:

    echo ${array[n]}

    遍历数组:

    复制代码 代码如下:

    filename=(`ls`)
    for var in ${filename[@]};do
    echo $var
    done

    下面为大家介绍一些shell数组的小例子。

    1、从“标准输入”读入n次字符串,每次输入的字符串保存在数组array里

    复制代码 代码如下:

    #!/bin/bash
    i=0
    n=5
    while [ "$i" -lt $n ] ; do
      echo "Please input strings ... `expr $i + 1`"
      read array[$i]
      b=${array[$i]}
      echo "$b"
      i=`expr $i + 1`
    done

    2、将字符串里的字母逐个放入数组,并输出到“标准输出”

    复制代码 代码如下:

    #!/bin/bash
    chars='abcdefghijklmnopqrstuvwxyz'
    for (( i=0; i<26; i++ )) ; do
        array[$i]=${chars:$i:1}
        echo ${array[$i]}
    done

    这里有趣的地方是 ${chars:$i:1},表示从chars字符串的 $i 位置开始,获取 1 个字符。如果将 1 改为 3 ,就获取 3 个字符啦~ 结果是:
    abc
    bcd
    ...
    vxy
    xyz
    yz     //没有足够字符串获取了
    z      //没有足够字符串获取了

    下面介绍将数组应用到shell环境变量的一些例子。

    3、将数组应用到shell环境变量(1)

    复制代码 代码如下:

    数组赋值:
    [root@pps ~]# SEASON=("Srping" "Summer" "Autumn" "Winter")
    当你发现赋值错了,也可以立刻从新赋值纠正,如上面的 Spring 被写成 Srping。
    重新赋值:(原来的值被重写)
    [root@pps ~]# SEASON=("Spring" "Summer" "Autumn" "Winter")

    查看一下环境变量:
    [root@pps ~]# set | grep SEASON
    SEASON=([0]="Spring" [1]="Summer" [2]="Autumn" [3]="Winter")

    显示整个数组:
    [root@pps ~]# echo ${SEASON[*]}  或者 echo ${SEASON[@]}
    Spring Summer Autumn Winter

    显示某一数组元素:
    [root@pps ~]# echo ${SEASON[3]}
    Winter

    给单个数组元素赋值:
    [root@pps ~]# SEASON[0]="New_Spring"

    再查看一下看数组:
    [root@pps ~]# echo ${SEASON[*]}
    New_Spring Summer Autumn Winter

    清除指定的单个数组元素:
    [root@pps ~]# unset SEASON[2]

    清除整个数组:
    [root@pps ~]# unset SEASON

    4、将数组应用到shell环境变量(2)
    使用tr命令将文件中的回车转换成空格:

    复制代码 代码如下:

    [root@pps ~]# cat /etc/shells | tr " " " " > /tmp/tmp.file


    将文件中内容给数组赋值:(碰到第一个回车符之前的内容)

    复制代码 代码如下:

    [root@pps ~]# read -a SHELLS < /tmp/tmp.file


    查看数组赋值情况:

    复制代码 代码如下:

    [root@pps ~]# set | grep "SHELLS"
    SHELLS=([0]="/bin/sh" [1]="/bin/bash" [2]="/sbin/nologin" [3]="/bin/tcsh" [4]="/bin/csh" [5]="/bin/ksh")


    后面可以将这个数组环境变量应用到其它的SHELL脚本或者应用程序里了。

  • 相关阅读:
    Maximum Depth of Binary Tree
    Single Number
    Merge Two Sorted Lists
    Remove Nth Node From End of List
    Remove Element
    Remove Duplicates from Sorted List
    Add Two Numbers
    编译视频直播点播平台EasyDSS数据排序使用Go 语言 slice 类型排序的实现介绍
    RTMP协议视频直播点播平台EasyDSS在Linux系统中以服务启动报错can’t evaluate field RootPath in type*struct排查
    【解决方案】5G时代RTMP推流服务器/互联网直播点播平台EasyDSS实现360°全景摄像机VR直播
  • 原文地址:https://www.cnblogs.com/cloudwind2011/p/4455078.html
Copyright © 2011-2022 走看看