首页 > 系统相关 >shell数组

shell数组

时间:2023-08-30 16:33:58浏览次数:49  
标签:shell 元素 echo 获取 数组 array my

数组概述

 1 数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。
 2 与大部分编程语言类似,数组元素的下标由0开始。
 3 Shell 数组用括号来表示,元素用”空格”符号分割开,语法格式如下:
 4 my_array=(value1 value2 … valueN)
 5 例如:my_array=(A B "C" D)
 6 我们也可以使用下标来定义数组:
 7 
 8 my_array[0]=value0
 9 my_array[1]=value1
10 my_array[2]=value2
数组概述:

数组中的主要方法

1 读取数组 :读取数组元素值的一般格式是:${array_name[index]}
2 获取数组中的所有元素:使用@ 或 * 可以获取数组中的所有元素,
3 获取数组的长度:获取数组长度的方法与获取字符串长度的方法相同
读取、获取元素、获取数组长度

shell 数组遍历的3种方法

  • 标准的for循环
  • for … in循环方法
  • While循环法

代码:

 1 #!/bin/bash
 2 cwd=$(cd $(dirname $0); pwd)
 3 function main()
 4 {
 5 echo "shel1 数组介绍"
 6 echo "1.读取数组元素值的一般格式,例如:"
 7 my_array=(A B "C" D)
 8 echo "第一个元素为: ${my_array[0]}"
 9 echo "第二个元素为: ${my_array[1]}"
10 echo "第三个元素为: ${my_array[2]}"
11 echo "第四个元素为: ${my_array[3]}"
12 echo "2.获取数组中的所有元素: 使用 或 * 可以获取数组中的所有元素,例如:"
13 my_array=(A B "C" D)
14 echo "数组的元素为: ${my_array[*]}"
15 echo "数组的元素为: ${my_array[@]}"
16 echo "3.获取数组的长度: 获取数组长度的方法与获取字符串长度的方法相同,例如:"
17 my_array=(A B "C" D)
18 
19 
20 echo "数组元素个数为: ${#my_array[*]}"
21 echo "数组元素个数为: ${#my_array[@]}"
22 echo "************************************************"
23 echo "shel1 数组遍历的3种方法"
24 echo "创建一个数组"
25 array=( A B C D 1 2 3 4)
26 echo "1.标准的for循环"
27 for(( i=0;i<${#array[@]};i++)) do
28 #${#array[@}获取数组长度用于循环
29 echo -e "\e[1;32m ${array[i]} \e[0m"
30 done;
31 
32 echo "2.for ... in"
33 echo "2.1 遍历(不带数组下标)"
34 for element in ${array[@]}
35 #也可以写成for element in $tarray[*]}
36 do
37 echo -e "\e[1;32m $element \e[0m"
38 done
39 
40 echo "2.2 遍历(带数组下标)"
41 for i in "${!array[@]}";
42 do
43 #printf "%s\t%s\n" "$i" "${array[$i]}"
44 printf "\e[1;32m %s\t%s\n $i ${array[$i]} \e[0m\n"
45 done
46 echo "3.while循环法"
47 i=0
48 while [ $i -lt ${#array[@]} ]
49 #当变量(下标)小于数组长度时进入循环体
50 do
51 echo -e "\e[1;32m ${array[$i]} \e[0m"
52 #按下标打印数组元素
53 let i++
54 done
55 
56 echo "4.我的示例"
57 pos=0
58 array=( 20230715 20230826 20230903 )
59 for element in ${array[@]}
60 do
61 end_date=$element
62 start_date="${element:0:6}01"
63 let pos++
64 echo -e "\e[1;32m 序号: echo ${pos}, start_date: ${start_date}, end_date: ${end_date} \e[0m"
65 done
66 
67 
68 
69 
70 }
71 
72 main $@
代码展示:vim test.sh

 

注解:start_date="${element:0:6}01"       ${element:0:6}用到了字符串截取功能,${element:0:6}01然后采用字符串拼接字符01

标签:shell,元素,echo,获取,数组,array,my
From: https://www.cnblogs.com/NGames/p/17667600.html

相关文章

  • Shell脚本入门
    一、Shell简介Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。  Shell可以直接使用在win/Unix/Linux上面,并且可以调用大量系统内部的功能来解释执行程序,如果熟练掌握Shell脚本,可以让我们操作计算机......
  • c++数组基本用法
    在C++中,数组是一种最基本的数据结构,用于存储一组相同类型的元素。以下是有关C++数组的一些重要信息:1.**声明和初始化数组:**```cpp//声明一个整数数组,指定大小为5intmyArray[5];//初始化数组的同时赋值intanotherArray[3]={10,20,30};```2.**访问数组元素:**数组中的元......
  • 双指针删除数组中的一些元素
    给定一个升序排列的的长度为n的数组nums,数组中每个元素都是正整数,请删除一部分这个数组的重复元素(数组元素需要原地改变),让这个数组中的每个数字都严格大于前一个数(第一个数除外),然后返回删除过后该数组的长度。例如n=4,nums=[1,2,2,3],则输出3.java代码实现publicintremoveDup......
  • sizeof和strlen的区别及数组名的2个例外
    sizeof是一个操作符,是用来计算变量所占内存空间的大小,不关注内存中存放的具体内容,单位是字节。strlen是一个库函数,专门求字符串长度的,只能针对字符串,从参数给定的地址向后一直找’\0‘,统计’\0‘之前出现的字符个数。数组名确实是可表示首元素地址,但有2个例外:1.sizeof(数组名),这里......
  • 求数组中k个连续子数组的最大和
    要求长度为k的连续子数组的最大和,可以使用滑动窗口的方法来解决。具体步骤如下:publicintfindMaxSum(int[]nums,intk){intmaxSum=0;//最大和intcurrSum=0;//当前窗口的和//第一个窗口的求和for(inti=0;i<k;i++){currS......
  • 从入门到掌握 - 系统学习shell语言
    简介什么是shellShell是一种程序或命令行解释程序,用于解释用户直接输入的用户命令或从文件中读取的用户命令,然后将它们传递给操作系统以进行操作或处理。要注意,这个过程是解释而不编译脚本,因为计算机系统会解释它们,并且无需按执行顺序编译Shell脚本。KenThompson的sh是......
  • 数据库备份和Shell基础测试及AWK(运维)
    第一题:使用MySQL命令进行备份和恢复的步骤如下:备份test库:使用mysqldump命令备份test库,并将备份写入一个.sql文件中。命令示例:mysqldump-u用户名-p密码test>backup.sql恢复备份:使用mysql命令将备份文件中的数据恢复到test库中。命令示例:mysql-u用户名-p密码test<backu......
  • 手撕代码之数组
    文章目录一、二维数组中的查找(leetcode240)二、旋转数组的最小数字(leetcode153)三、旋转数组中的查找(leetcode33)四、数组中出现次数超过一半的数字(leetcode169)五、把数组排成最大的数(leetcode179)六、数组中只出现一次的数字(leetcode136)七、排序数组中查找某一个数第一次和最后......
  • 用js reduce 写一个reduce循环遍历数组对象,里面带有if判断
    简单的reduce案例,实际场景中使用不多,这里给到一个常用的遍历数组对象!!varproducts=[{name:"Apple",price:2.5,quantity:3},{name:"Banana",price:1.5,quantity:2},{name:"Orange",price:3,quantity:4},];vartotalPrice=products......
  • 1.5 编写自定位ShellCode弹窗
    在笔者上一篇文章中简单的介绍了如何运用汇编语言编写一段弹窗代码,虽然简易ShellCode可以被正常执行,但却存在很多问题,由于采用了硬编址的方式来调用相应API函数的,那么就会存在一个很大的缺陷,如果操作系统的版本不统或系统重启过,那么基址将会发生变化,此时如果再次调用基址参数则会......