数组-在Shell脚本中的基本使用介绍

Shell脚本在运维工作中是极其重要的,而数组在shell脚本里的运用无论是在循环或运算方面都是非常实用的一个环节。
下面是对shell脚本中数组方面一些操作在此进行记录,希望能帮助到有兴趣的朋友~

1.数组定义

[[email protected] ~]# a=(1 2 3 4 5 6 7 8)
[[email protected] ~]# echo $a
1
一对括号表示是数组,数组元素用“空格”符号分割开。

2.数组读取与赋值
1)得到长度
[[email protected] ~]# echo ${#a[@]}
8
[[email protected] ~]# echo ${#a[*]}
8

用${#数组名[@或*]} 可以得到数组长度

2)读取:
[[email protected] ~]# echo ${a[4]}
5
[[email protected] ~]# echo ${a[*]}
1 2 3 4 5 6 7 8

用${数组名[下标]} 下标是从0开始 下标是:*或者@ 得到整个数组内容

3)赋值:
[[email protected] ~]# a[1]=100
[[email protected] ~]# echo ${a[*]}
1 100 3 4 5 6 7 8
[[email protected] ~]# a[5]=140
[[email protected] ~]# echo ${a[*]}
1 100 3 4 5 140 7 8

直接通过 数组名[下标] 就可以对其进行引用赋值,如果下标不存在,自动添加新一个数组元素

4)删除:
[[email protected] ~]# a=(1 2 3 4 5 6 7 8)
[[email protected] ~]# unset a
[[email protected] ~]# echo ${a[*]}

[[email protected] ~]# a=(1 2 3 4 5 6 7 8)
[[email protected] ~]# unset a[1]
[[email protected] ~]# echo ${a[*]}
1 3 4 5 6 7 8
[[email protected] ~]# echo ${#a[*]}
7

直接通过:unset 数组[下标] 可以清除相应的元素,不带下标,清除整个数据。

3.特殊使用
1)分片:
[[email protected] ~]# a=(1 2 3 4 5 6 7 8)
[[email protected] ~]# echo ${a[@]:0:3}
1 2 3
[[email protected] ~]# echo ${a[@]:1:4}
2 3 4 5
[[email protected] ~]# c=(${a[@]:1:4})
[[email protected] ~]# echo ${#c[@]}
4
[[email protected] ~]# echo ${c[*]}
2 3 4 5

直接通过 ${数组名[@或*]:起始位置:长度} 切片原先数组,返回是字符串,中间用“空格”分开,因此如果加上”()”,将得到切片数组,上面例子:c 就是一个新数据。

2)替换:
[[email protected] ~]# a=(1 2 3 4 5 6 7 8)
[[email protected] ~]# echo ${a[@]/3/100}
1 2 100 4 5 6 7 8
[[email protected] ~]# echo ${a[@]}
1 2 3 4 5 6 7 8
[[email protected] ~]# a=(${a[@]/3/100})
[[email protected] ~]# echo ${a[@]}
1 2 100 4 5 6 7 8

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

时间: 2024-10-10 00:56:00

数组-在Shell脚本中的基本使用介绍的相关文章

shell 脚本中$$,$#,$?

$0 这个程式的执行名字$n 这个程式的第n个参数值,n=1..9$* 这个程式的所有参数,此选项参数可超过9个.$# 这个程式的参数个数$$ 这个程式的PID(脚本运行的当前进程ID号)$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)$? 执行上一个指令的返回值 (显示最后命令的退出状态.0表示没有错误,其他任何值表明有错误)$- 显示shell使用的当前选项,与set命令功能相同[email protected] 跟$*类似,但是可以当作数组用 shell 脚本中$$,

Shell脚本中的函数、数组

Shell脚本中的函数 Shell脚本中的数组 原文地址:http://blog.51cto.com/13515599/2107416

shell脚本中的函数,shell中的数组,shell项目-告警系统

shell脚本中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可. 格式: function f_name() {command }函数必须要放在最前面,function可以省略直接写函数名 示列1,打印shell的参数 [[email protected] shell]# cat fun1.sh #!/bin/bash function inp(){ echo "the first par is $1" echo

shell脚本中常见的一些特殊符号和作用详解

这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下 在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我们编写的代码更加简洁和高效,这里给大家汇总下: 1.{} 大括号: 用法一:通配符扩展eg: ls my_{finger,toe}s这条命令相当于如下命令的组合:ls my_fingers my_toeseg: mkdir {userA,userB,userC}-{home,bin,data}我们将得到

shell 脚本中$$,$#,$?分别代表什么意思?

$0 这个程式的执行名字 $n 这个程式的第n个参数值,n=1..9 $* 这个程式的所有参数,此选项参数可超过9个. $# 这个程式的参数个数 $$ 这个程式的PID(脚本运行的当前进程ID号) $! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号) $? 执行上一个指令的返回值 (显示最后命令的退出状态.0表示没有错误,其他任何值表明有错误) $- 显示shell使用的当前选项,与set命令功能相同 [email protected] 跟$*类似,但是可以当作数组用 if [

shell脚本介绍,shell脚本结构和执行方式,date命令的用法,shell脚本中的变量简介

笔记内容: 20.1 shell脚本介绍 20.2 shell脚本结构和执行 20.3 date命令用法 20.4 shell脚本中的变量 笔记日期:2017-11-21 20.1 shell脚本介绍 Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的.但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令

20.5 Shell脚本中的逻辑判断;20.6 文件目录属性判断;20.7 if特殊用法;20.8 20.9 cace判断(上下)

扩展: select用法 http://www.apelearn.com/bbs/thread-7950-1-1.html 20.5 Shell脚本中的逻辑判断 格式1:if 条件 ; then 语句; fi 1. 创建if1.sh测试脚本: [[email protected] ~]# vi if1.sh a=5,如果a大于3,满足这个条件,显示ok 添加内容: #!/bin/bash a=5 if [ $a -gt 3 ] then echo ok fi 2. 执行if1.sh脚本: [[e

20.1 Shell脚本介绍;20.2 Shell脚本结构和执行;20.3 date命令用法;20.4 Shell脚本中的变量

20.1 Shell脚本介绍 1. shell是一种脚本语言 aming_linux blog.lishiming.net 2. 可以使用逻辑判断.循环等语法 3. 可以自定义函数 4. shell是系统命令的集合 5. shell脚本可以实现自动化运维,能大大增加我们的运维效率 20.2 Shell脚本结构和执行 1. 开头(首行)需要加: #!/bin/bash 2. 以#开头的行作为解释说明: 3. 脚本的名字以.sh结尾,用于区分这是一个shell脚本 4. 执行.sh脚本方法有两种:

在shell脚本中进行条件控制以及使用循环

转载请标明:http://www.cnblogs.com/winifred-tang94/ if条件语句语法: if [ 条件表达式 ] then 代码 else 代码 fi 注意:在上面的if条件语句中,if和 [ 之间要有空格,而条件表达式和两边的 [ ] 都要有空格,条件表达式不能紧挨着 [ 和 ]. if条件表达式以fi结束. Eg. 结果出现了以下问题: 原因是因为开头在#!后还要有一个/,加上/后解释器错误没有了,代码如下: 可是仍然有没有那个文件或目录的错误.对于这个错误我觉得是e