博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Shell 数组
阅读量:5294 次
发布时间:2019-06-14

本文共 1537 字,大约阅读时间需要 5 分钟。

Shell中数据类型不多,比如说字符串,数字类型,数组。数组是其中比较重要的一种,同时Shell中的数组不像JAVA/C,只能是一维数组,没有二维数组;数组元素大小无约束,也无需先定义数组的元素个数;但其索引则像JAVA/C/Python,从0开始,下面是我学习过程的一些总结。

定义:

  shell的定义和python相似格式如下

# 变量名=(值 值 值)   值之间用空格或换行隔开arr=(1 2 3 4)# 逐个赋值arr[o]=1arr[1]=2arr[2]=3arr[3]=4arr=([o]=1 [1]=2 arr[2]=3 arr[3]=4)

数组的基本操作

获取数组

  • 读取某个下标的值:${数组名[下标]}

  • 获取数组长度:${#数组名[@/*]} 即${#数组名[*]}或${#数组名[@]}

  • 求元素长度: ${#数组名[index]}

    ​ expr length ${数组名[index]}

    ​ ${数组名[index]} | wc -L

添加数组

  • 直接添加 数组[index]=值 index大于数组长度则在最后添加
  • 利用旧数组创建新的 newArrays=(${old[*]} 值)

修改数组

  • 直接修改 数组[index]=值

删除数组

  • 删除元素 unset 数组[index]
  • 删除数组 unset 数组

数组的截取

   和字符串相似,可以和字符串的方法对比着看。

假设有变量

arr=(1 2 3 4 5 6 )var=(book food)

1. # 号截取,从左到右进行最短匹配查找。

echo ${var[@]#b*o}

其中 var 是变量名,# 号是运算符,b*o 表示从左边开始查找

即删除 bo

结果是 :ok food

2. ## 号截取,从左到右进行最长匹配查找

echo ${var##b*o}

即删除boo

结果是 k food

3. %号截取,从右到左进行最短匹配查找

echo ${var%o*d}

%/* 表示从右边开始,删除第一个 od

结果是:book fo

4. %% 号截取,删从右到左进行最长匹配查找

echo ${var%%o*d}

%% 表示从右边开始,删除最后(最右边边)一个 o0d号

结果是:book f

5. 从左边第几个字符开始,及字符的个数

echo ${arr[@]:0:2}echo ${arr[@]::2} #两个一样

其中的 0 表示左边第一个字符开始,2 表示字符的总个数。

结果是:1 2

6. 从左边第几个字符开始,一直到结束。

echo ${arr[@]:1}

其中的 1表示左边第2个字符开始,一直到结束。

结果是 :3 4

7. 从右边第几个字符开始,及字符的个数

echo ${var[@]:(-2):2}

其中的 -2表示右边算起第2个字符开始,2表示字符的个数。

结果是:3 4

8.元素切片

names=(Jerry Alice David Wendy)echo $(names[0]:0) # 从0开始取所有   Jerryecho $(names[0]:1:2) # 从0开始取2个 erecho $(names[0]:6) #超出显示空行

数组替换

  • ${array[@]/x/y} 最小匹配替换,每个元素只替换一次
  • ${array[@]//x/y} 最大匹配替换,每个元素可替换多次
  • ${array[@]/x/} 最小匹配删除,只删除一个符合规定的元素
  • ${array[@]//x/} 最大匹配删除,可删除多个符合规定的元素

这个和前面相似就不举例子了。

转载于:https://www.cnblogs.com/yangliguo/p/8006564.html

你可能感兴趣的文章
团队项目第二次冲刺(6)
查看>>
问题解决--无法解析的外部符号 _imp_XXXXXXXXX
查看>>
__proto和HTMLElement的扩展子类
查看>>
webx--petstore
查看>>
eclipse常用设置之自动格式化
查看>>
PHP浮点数比较
查看>>
Selenium_Python接口-Alert类
查看>>
linux远程win7教程
查看>>
获取当前线程的对象
查看>>
函数指针介绍及其用法
查看>>
WinForm多线程+委托防止界面假死
查看>>
WPF拖放功能实现zz
查看>>
一、HTML和CSS基础--HTML+CSS基础课程--第6部分
查看>>
HDU2553 N皇后问题---(dfs)
查看>>
php.ini 详解
查看>>
SpringMVC中MultipartFile参数问题
查看>>
移动应用开发选型:向左还是向右?
查看>>
开发进度一
查看>>
十天冲刺(6)
查看>>
加载selenium2Library失败---robotframework环境搭建(site-packages下无selenium2library文件夹)...
查看>>