#!/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

源码:

 #!/bin/sh
# # 数组的声明与初始化方法
# 先声明后赋值:
declare -a array
array=(one two three) # 声明并初始化:
array_1=( four) array_2=( four
) array_3[]=
array_3[]=
array_3[]=
array_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[]}
echo $array
echo $array[]
echo ${#array}
echo "=======================================" # 增加或修改元素(值)
array[]='hello' #增加
array[]='shells' #修改
echo ${array[*]}
echo ${array[]} #空值
echo "=======================================" # 删除元素或数组
unset array[]
echo ${array[*]}
unset array #删除数组
echo ${array[*]}
echo "=======================================" # 切片访问 ${array_name[*]:startindex:endindex} or ${array_name[*]:startindex:endindex} 即 array_name[startindex,endindex)
echo ${array_1[*]::}
echo ${array_1[@]::} #越界显示为空
echo ${array_1[*]:} #>=
echo ${array_1[*]::} #< echo "=======================================" # 模式替换(匹配并替换) ${array_name[*]/oldchar/newchar}
array_4=( "" '81o')
echo ${array_4[*]}
echo ${array_4[*]//replace}
echo "=======================================" # 数组的长度(元素个数)
arraylength1=${#array_1[@]}
arraylength2=${#array_2[*]}
echo $arraylength1
echo $arraylength2
echo "=======================================" # 元素的长度
elementlength3=${#array_3[]}
elementlength3_1=${#array_3[]}
echo $elementlength3
echo $elementlength3_1
echo "=======================================" # 数组的应用(遍历)
for (( n=; 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 /etc/passwd | cut -d: -f1`; do
echo "Username: $I"
done
echo "xxxxxxxxxxxx" ARRAY=`head -n /etc/passwd | cut -d: -f1`
for I in $ARRAY; do
echo "Username1: $I"
done # 参考 http://blog.csdn.net/zhuying_linux/article/details/6778877

array.sh

Linux Shell 中数组的语法及应用的更多相关文章

  1. linux shell 中数组使用方法介绍

    linux shell在编程方面比windows 批处理强大太多,不管是在循环.运算.已经数据类型方面都是不能比較的. 以下是个人在使用时候,对它在数组方面一些操作进行的总结. 1.数组定义 [che ...

  2. linux shell 中数组的定义和for循环遍历的方法

    linux 中定义一个数据的语法为: variable=(arg1 arg2 arg3 ....) 中间用空格分开.数组的下标从0开始. 1 获取下标为n的元素: variable[n] 而且不存在数 ...

  3. shell中数组基础语法

    数组的基本赋值 arr=(a b c) arr[index]=a 2.常用的两个方法 str=${arr[@]}(数组转化成字符串) len=${#arr[*]}(数组长度) 3.遍历数组的方法 #! ...

  4. linux shell 中的数组的取值 遍历 替换 删除操作

    引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...

  5. linux shell 中的sleep命令

    开始还以为是这样的语法: sleep(1), 后面发现是: linux shell 中的sleep命令 分类: LINUX 在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小 ...

  6. Linux shell之数组

    引言 在Linux平台上工作,我们经常需要使用shell来编写一些有用.有意义的脚本程序.有时,会经常使用shell数组.那么,shell中的数组是怎么表现的呢,又是怎么定义的呢?接下来逐一的进行讲解 ...

  7. Linux shell中的一个问题 ${}带正则匹配的表达式

    目前在准备龙芯项目的PMON,在研究其编译过程的时候,看到一些make 语句,百思不得其解.后来在shell编程中看到一点资料,牵扯到Shell中的正则表达式.故记录下来,以备后来查阅. 问题: 在某 ...

  8. 理解 Linux shell 中的一个方言:2>&1

    理解 Linux shell 中的一个方言:2>&1  2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如 ...

  9. linux shell 中的位置变量

    对于linux shell 中的位置变量,我一直以来都是吐不出来又咽不下去,每次看到都不懂,不懂了就去百度google,看完了又忘,真是慢性咽炎啊.现在认真想想也是,其实自己一直以来都没有好好学习过, ...

随机推荐

  1. redis多机集群部署文档

    redis多机集群部署文档(centos6.2) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下 ...

  2. js基础之变量类型

    1.NAN(Not a number) 不是一个数字 自身:console.log(NaN==NaN)和console.log(NaN===NaN)返回值都是false; 其他函数,isNaN()可用 ...

  3. 资料:MVC框架+SQL Server 数据集成引擎

    ylbtech-资料:MVC框架+SQL Server 数据集成引擎 1.返回顶部 1. 功能特点: MVC框架耦合性低视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样 ...

  4. 模拟Spring中applicationContext.xml配置文件初始化bean的过程

    package com.xiaohao.action; import java.io.File; import java.lang.reflect.Method; import java.util.C ...

  5. 报错:Caused by: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): cn.itcast.bos.domain.base.SubArea

    因为 实体类中的主键 是String类型 不能自动为其分配id  所以需要手动设置在service层   model.setId(UUID.randomUUID().toString());

  6. PCLVisualizer可视化类(4)

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=168 多视口显示 所示,并进行比较分析,利用不同的搜索半径,基于同一点云计算 ...

  7. 1.3 DVWA亲测sql注入漏洞

    LOW等级   我们先输入1 我们加上一个单引号,页面报错 我们看一下源代码: <?php if( isset( $_REQUEST[ 'Submit' ] ) ) { // Get input ...

  8. 【leetcode 968. 1028. 从先序遍历还原二叉树】解题报告[待完善...]

    思路:用一个栈来管理树的层次关系,索引代表节点的深度 方法一: TreeNode* recoverFromPreorder(string S) { /* 由题意知,最上层节点深度为0(数字前面0条横线 ...

  9. hdu 1729 Stone Game

    Stone Game HDU - 1729 题意: 给定n个箱子,每个箱子的容量为si,每个箱子里最初有ci个石子,每次放入石子不能超过放入前的石子数的平方,谁无法继续放入石子就算输.   /* 这是 ...

  10. P2742 【模板】二维凸包 / [USACO5.1]圈奶牛Fencing the Cows

    题意:n个点,求凸包周长.(纯板子QAQ) 定义 凸包:用最小的凸多边形将n个点围在里面的图形为凸包 前置 向量:点积:(a,b) (c,d)=(a*c,b*d) =|(a,b)|*|(c,d)|*c ...