bash之数组增删改查

bash之数组-增删改查
简介:
存储多个元素的连续的内容空间
数组名:自定义
索引:编号从0开始,属于数值索引:
    注意:索引也可支持使用自定义的格式,而不仅仅是数值格式;bash的数组支持稀疏格式:


声明数组:declare -a array_name
关联数组:declare -A array_name
数组元素的赋值方式
    1)一次只赋值一个元素:

 array_name[INDEX]=value
     weekdays[0]="sundary"

2)一次赋值全部元素

 array_name=("val1" "val2" "val3" ...)

3)只赋值特定元素

   array_name=([0]="val1" ...)

4)交互式赋值元素

 read -a array_name

向数组中追加元素(按照下标号依次添加,不能断):

 array_name[${array_name[*]}]=xxxxxx

关联数组:

    declare -A array_name
    array_name=([index_name1]="val1" [index_name2]="val2" ...)


删除数组中的某元素:

 unset array[INDEX]


1)

array=("a" "b" "c" "d")
echo ${array[*]}
a b c d
echo ${array[0]}
a
array[0]="z"
echo ${array[*]}
z b c d

2)
调用方法是:${数组名[@或*]/查找字符/替换字符} 该操作不会改变原先数组内容,如果需要修改,可以看上面例子,重新定义数据。

a=(1 2 3 4 5)
echo ${a[@]/3/100}
1 2 100 4 5
echo ${a[@]}
1 2 3 4 5
a=(${a[@]/3/100})
echo ${a[@]}
1 2 100 4 5


引用数组中的元素:${数组名[索引]}
    引用第一个元素
        注意:省略[index]表示引用下标为0的元素
    引用所有所有元素
        数组的长度(数组中元素的个数):${#array_name[*或者@]}
    取出指定元素
        ${array_name[1]}
    数组切片:${array_name[*]:offset:number}
        offset:要跳过的元素个数
        number:要取出的元素个数,取偏移量之后的所有元素:${array_name[*]:offset}
练习题:
练习1:生成10个随机数保存于数组中,并找出最大值和最小值

max=0
for I in {1..9}
do
        rand[$I]=$RANDOM && [ ${rand[$I]} -gt $max ] && max=${rand[$I]}
        echo ${rand[$I]}
done
echo max:$max

练习2:定义一个数组,数组中的元素是/var/log目录下以.log结尾的文件的名字,要统计其下标(【】)为偶数的文件中的行数之和
思路:
整数运算:

{
a=1
b=2
c=$[$a+$b] or
c=$(expr $a + $b)
}
{
file=(/var/log/*.log)
echo ${#file[*]}
echo ${file[*]}
}

练习3:生成10个随机数,升序或降序排序:

时间: 2024-10-24 04:54:40

bash之数组增删改查的相关文章

数组增删改查及冒泡

package com.judge; //插入功能的实现import java.util.Scanner; public class Insert { public static void main(String[] args){ int[] a=new int[]{1 ,2 ,3 ,4 ,5 ,6}; Output(a); /*可在main函数之外定义函数关系,以达到快捷应用的目的 * public static void Output(int[] arr1){ for(int i=0;i<a

JavaScript 数组增删改查 排序 字符串互转

arr -> 数组new -> 新数组str -> 字符串index -> 修改位置n -> 修改数量item -> 修改内容 [1]数组添加 1.index依次增加 arr.push('item'); // 放入 item 2.在指定 index 处开始添加 'item' arr.splice(index, 0, 'item'); // 第二个参数一定为0!!! [2]从数组中删除元素 1.删除从index开始以后的所有元素,包括index arr.splice(in

数组的增删改查操作

做批量数据录入时须要对json内的数组进行增删改查操作,splice还是非常强大的记录一下用法. var lang = ["php","java","javascript"]; //删除 var removed = lang.splice(2,1); console.log(lang); //php,javascript //console.log(removed); //java ,返回删除的项 //插入 var insert = lang.s

数据结构 线性结构(数组[列表] ,链表 单链表的增删改查**, 线性结构的应用 队列 栈[函数的调用**]),非线性结构 树

数据结构 参考:http://lupython.gitee.io/ 线性结构 就是能够用一根线串起来的数据结构 数组 (列表) 问:申请数组的前提条件是啥? a[12]?内存需要满足的条件? 答:内存必须有一块连续的内存空间 int a[7] : 声明一个数组,这个数组的数组名是 a, 数组的大小是 7, 数组元素的类型是整型. int a[7] = array(1,2,3,4,5,6,7) 问:如何申请内存? 答:C,C++语言,申请:mallco (28).释放:free(28) 问:int

(52)指针 (53)数组的增删改查

(52)指针 1. int * p定义一个指针 2. P=&a就能将指针指向变量a 3.定义一个赋值函数不能直接赋值需要用指针 1 #include<stdio.h> 2 void f1(int *b) 3 { 4 *b=10; 5 } 6 int main(void) 7 { 8 int a=1; 9 f1(&a); 10 printf("%d",a); 11 return 0; 12 } (53)数组的增删改查 1 #include<stdio.h

用基本数据结构修改后的学生信息管理系统(增删改查)

package com.xt.student.system; //创建学生类存放信息 public class Student {//声明变量private String stuNo; private String stuName; private String gender; private int age; private int score; //对变量进行封装 public String getStuNo() {return stuNo;} public void setStuNo(St

javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

jsp页面表格布局Html代码 <body > <center> <input type="text" value="111" id="mytext"> <table border="1" width="60%" id="mytable"> <tr> <td id="td1">第一行第一列<

mongodb的学习笔记一(集合和文档的增删改查)

1数据库的增删改查 一.增加一个数据库: use blog-----切换到指定的数据库,如果数据库不存在,则自动创建该数据库(新建的数据库,如果没有存储对应的集合,是不会显示出来的) 二.删除一个数据库 1首先用use 切换到你需要删除的数据库 use test 2然后执行db.dropDatabase()命令 db.dropDatabase() 三.修改一个数据库的名字 db.copyDatabase(fromdb, todb, fromhost) fromdb:源数据库, todb:目标数据

20150113--PDO增删改查+封装PDO类

回顾 方法重写:是因为对象的访问会先去子类的类空间找,从而形成了对父类的覆盖. 继承链:类只能单继承,但是可以通过继承链来实现多继承 特殊类:final类和抽象类 接口:interface PHP重载:当访问一个权限不够或者不存在的属性或者方法的时候,会自动触发的魔术方法. 属性重载和方法重载 对象的保存和还原:serialize和unserialize(对应的类已经在内存:如果有资源属性必须进行重新加载资源),魔术方法(__sleep和__wakeup) 对象遍历:默认只能遍历public属性