linux中shell对数组的操作例子

bash shell 只支持一维数组,shell中对数组的大小没有限制。数组元素的下标由0开始编号。

定义数组

Shell 定义数组例子:

array_name=(value0 value1 value2 valuen)
或者
array_name=(
value0
value1
value2
valuen
)

还可以单独定义数组的各个分量:

array_name[0]=value0
array_name[1]=value1
array_name[2]=value2

可以不使用连续的下标,而且下标的范围没有限制。

一个例子看懂数组的操作

#!/bin/bash
array_name=('1' '22' '333' '4444')
#打印出所有的值
echo ${array_name[*]}
echo ${array_name[@]}
#默认输出数组的第一个值
echo $array_name
echo ${#array_name}
#读取数组的值
echo $array_name[3]
echo ${array_name[3]}
#输出数组长度
echo ${#array_name[@]}
echo ${#array_name[*]}
echo ${#array_name[1]}
#赋值操作
array_name[0]='888'
echo ${array_name[0]}

补充

1.数组的声明:

1)array[key]=value # array[0]=one,array[1]=two
2)declare -a array # array被当作数组名
3)array=( value1 value2 value3 ... )
4)array=( [1]=one [2]=two [3]=three ... )
5)array="one two three" # echo ${array[0|@|*]},把array变量当作数组来处理,但数组元素只有字符串本身
2.数组的访问:

1)${array[key]} # ${array[1]}
3.数组的删除

1)unset array[1] # 删除数组中第一个元素
2)unset array # 删除整个数组
4.计算数组的长度:

1)${#array}
2)${#array[0]} #同上。 ${#array[*]} 、${#array[@]}。注意同#{array:0}的区别
5.数组的提取
从尾部开始提取:

array=( [0]=one [1]=two [2]=three [3]=four )
${array[@]:1} # two three four,除掉第一个元素后所有元素,那么${array[@]:0}表示所有元素
${array[@]:0:2} # one two
${array[@]:1:2} # two three
6.子串删除

[root@localhost dev]# echo ${array[@]:0}
one two three four

[root@localhost dev]# echo ${array[@]#t*e} # 左边开始最短的匹配:"t*e",这将匹配到"thre"
one two e four

[root@localhost dev]# echo ${array[@]##t*e} # 左边开始最长的匹配,这将匹配到"three"

[root@localhost dev]# array=( [0]=one [1]=two [2]=three [3]=four )

[root@localhost dev]# echo ${array[@] %o} # 从字符串的结尾开始最短的匹配
one tw three four

[root@localhost dev]# echo ${array[@] %%o} # 从字符串的结尾开始最长的匹配
one tw three four
7.子串替换

[root@localhost dev]# array=( [0]=one [1]=two [2]=three [3]=four )[code]
第一个匹配到的,会被删除
[code][root@localhost dev]# echo ${array[@] /o/m}
mne twm three fmur
所有匹配到的,都会被删除

[root@localhost dev]# echo ${array[@] //o/m}
mne twm three fmur
没有指定替换子串,则删除匹配到的子符

[root@localhost dev]# echo ${array[@] //o/}
ne tw three fur
替换字符串前端子串

[root@localhost dev]# echo ${array[@] /#o/k}
kne two three four
替换字符串后端子串

[root@localhost dev]# echo ${array[@] /%o/k}
one twk three four

时间: 2024-09-19 00:06:11

linux中shell对数组的操作例子的相关文章

linux中shell脚本数组的操作教程

数组赋值:a=(1 2 3 4 5) a[1]=1 数组长度:echo ${#a[@]} 或者 echo ${#a[*]} 读取数组:echo ${a[@]} 或者 echo ${a[*]} echo ${a[0]}                             PS: 数组下标从0开始 删除数组:unset a unset a[1] 数组分片:echo ${a[@]:0:3}                  显示为1,2,3                ps:截取前3个数组值显示

linux中shell判断字符为字母例子

判断输入的字符为字母 [root@LinuxEA awk]# cat 111cn.net #!/bin/sh read linuxea if [[ $linuxea =~ ^[a-zA-Z]+$ ]]; then         echo "ok" else         echo "error" fi [root@LinuxEA awk]# 执行如下: [root@LinuxEA awk]# bash 111cn.net 123 error [root@Linu

应用-Linux中shell脚本问题

问题描述 Linux中shell脚本问题 ]我有shell脚本,放在/bin/目录下,内容如下: #!/bin/sh cd /usr /sbin/insmod s3c_ts.ko ./digitpic ./MSYH.TTF & 当我开发板上电以后我手动执行手动执行test.sh 我的digitpic应用程序能够正常启动 当我在/etc/init.d/rcS 文本里面最后添加exec test.sh 提示说这个触摸屏读取错误,也就是/sbin/insmod s3c_ts.ko这部分错误了,就只有触

硬件-求助!急!!!Linux中添加硬盘的具体操作

问题描述 求助!急!!!Linux中添加硬盘的具体操作 创建了一台虚拟机,在安装系统时分区时通过 LVM 配置了逻辑卷,系统装好后,发现 /home 空间不够用,想在虚拟机中加一块 硬件,并调整 /home 挂载点对应分区的容量,硬盘 sdb 已经成功添加至系统,容量为 4G,未进行初始化,请写出后续完整操 作步骤(/home 挂载点对应的文件系统是 /dev/mapper/vg-lv_home). 求具体操作急 解决方案 http://www.cnblogs.com/yiru/archive/

linux中shell变量$#,$@,$0,$1,$2的含义解释

比如脚本名称叫start.sh 输入参数三个: 1 2 3 运行test.sh 1 2 3后 $*为"1 2 3"(一起被引号包住) $@为"1" "2" "3"(分别被包住) $#为3(参数数量) linux中shell变量$#,$@,$0,$1,$2的含义解释:  变量说明:  $$  Shell本身的PID(ProcessID)  $!  Shell最后运行的后台Process的PID  $?  最后运行的命令的结束代码

linux中SHELL脚本中的数组用法

在Shell中(我这里是Bash),其实没有传统意义上的"数据类型",把任何变量中存的值都是作为字符组成的"字符串".当然,通过declare可以声明某个变量是整型.数组等类型.其中,数组就是本文要专门讲的了.在Bash中,仅支持一维数组,当然通过关联数组(associative array)的形式可以模拟多维数组. 1. 数组的声明 用 declare -a array 声明array是一个数组,用declare -A a_array 声明a_array是一个关联

linux中 shell 历史命令记录功能_Linux

在 Linux 下面可以使用 history 命令查看用户的所有历史操作,同时 shell 命令操作记录默认保存在用户目录的 .bash_history 文件中.通过这个文件可以查询 shell 命令的执行历史,有助于运维人员进行系统审计和问题排查,同时在服务器遭受黑客攻击后,也可以查询黑客登录服务器的历史命令操作.但是黑客在入侵后,为了抹除痕迹,会删除 .bash_history 文件,这个就需要合理备份这个文件了. 默认的 history 命令只能查看用户的历史操作记录,但是不能区分每个用户

linux中shell脚本实现下载完关机_linux shell

用mint 有一段时间了,下载基本用firefox,有时下载几个G的游戏.可是firefox没有找到下载完关机的选择.处于这个原因,写了这个. download_shutdown.sh #!/bin/bash # Created By: Demo <demo@demo.com> # Created Time: 2015-01-30 12:36:44 # Modified Time: 2015-01-30 12:54:21 dir=$1 while [ "1" ] do if

linux中shell常用操作命令系列:服务操作

务的基本操作     /etc/init.d/sendmail start                   # 启动服务      /etc/init.d/sendmail stop                    # 关闭服务     /etc/init.d/sendmail status                  # 查看服务当前状态     /date/mysql/bin/mysqld_safe --user=mysql &   # 启动mysql后台运行     vi