Linux教程

您所在的位置:网站首页 shell程序中字符串的连接可以直接连接 Linux教程

Linux教程

2024-06-26 07:31:59| 来源: 网络整理| 查看: 265

Shell中字符串与数组操作实例 前言

本篇主要介绍了介绍在Shell脚本中对于字符串的处理,数据变量的定义与使用。

字符串截取及切割 子串截取的三种用法: ${var:起始位置:长度}expr substr “$var” 起始位置 长度echo $var | cut -b 起始位置-结束位置

字符串的截取,只是单纯将字符串截取出来,对原来的变量并不会进行修改。

${var:起始位置:长度} SCHOOL="This is string." echo ${#SCHOOL} //确定变量的长度 echo ${SCHOOL:0:6}

使用${}方式截取字符串时,起始位置是从0开始的(和数组下标编号类似)。

expr substr “$var” 起始位置 长度

expr substr “$var” 起始位置 长度

expr substr "$SCHOOL" 1 6

使用expr substr截取字符串时,起始编号从1开始,这个要注意与${}相区分。

注意:因为SCHOOL变量的值里含有空格,所以应该加双引号进行调用,否则是会报错的

echo $var | cut -b 起始位置-结束位置

选项 -b 表示按字节截取字符,其中起始位置、结束位置都可以省略。当省略起始位置时,视为从第1个字符开始(编号也是从1开始,与expr类似),当省略结束位置时,视为截取到最后。

echo $SCHOOL | cut -b 1-6 路径分割: 取目录位置:dirname “字符串”取文档的基本名称:basename “字符串” 字符串的替换 子串替换的两种用法:

只替换第一个匹配结果:${var/old/new}

echo ${SCHOOL/r/RRRR}

替换全部匹配结果:${var//old/new}

echo ${SCHOOL//r/RRRR} 字符串掐头去尾:

从左向右,最短匹配删除:${变量名#*关键词}

echo ${MAIL#*oo} echo ${MAIL#*/}

从左向右,最长匹配删除:${变量名##*关键词}

echo ${MAIL##*oo} echo ${MAIL##*/}

从右向左,最短匹配删除:${变量名%关键词*}

echo ${MAIL%oo*} echo ${MAIL%/*}

从右向左,最长匹配删除:${变量名%%关键词*}

echo ${MAIL%%oo*} echo ${MAIL%%/*}

要适应不同扩展名文件的修改,并能够反向还原。 修改前的扩展名、修改后的扩展名通过位置变量 1、 2提供。

vim ../renfilex.sh #!/bin/bash for FILE in "$1" do mv $FILE ${FILE%$1}"$2" done 字符串初值的处理

只取值, var:−word若变量var已存在且非Null,则返回 var 的值;否则返回字串“word”,原变量var的值不受影响。

取值+赋值, var:=word若变量var已存在且非Null,则返回 var 的值,原变量值不变;否则返回字串“word”,并将此字串赋值给变量 var。

数据的定义和使用 建立数组的方法: 格式1,整体赋值:数组名=(值1 值2 .. .. 值n)格式2,单个元素赋值:数组名[下标]=值 查看数组元素的方法: 获取单个数组元素:${数组名[下标]}获取所有数组元素:${数组名[@]}获取数组元素个数:${#数组名[@]}获取连续的多个数组元素:${数组名[@]:起始下标:元素个数}获取某个数组元素的长度:${#数组名[下标]}截取数组元素值的一部分:${#数组名[下标]:起始下标:字符数} declare命令的使用

在Shell环境中,变量默认均作为字符串处理,当参与expr、 []数学运算时自动作为整数处理。比如,使用“1+2”、“X+2”、“ X+2”表达式是无法将运算结果直接作为整数赋值给指定的变量的:

[root@service99 ~]# X=24 [root@service99 ~]# A=1+2 [root@service99 ~]# echo $A 1+2 //赋值结果为字符串 [root@service99 ~]# A=X+2 [root@service99 ~]# echo $A X+2 //赋值结果为字符串 [root@service99 ~]# A=$X+2 [root@service99 ~]# echo $A 24+2

若要将一个变量强制设置为整数,可以使用declare命令声明(-i选项):

[root@service99 ~]# declare -i A //先将A声明为整数变量 [root@service99 ~]# A=1+2 //然后赋值 [root@service99 ~]# echo $A //确认结果 3 [root@service99 ~]# declare -i B=$X+2 //也可以在声明的同时进行赋值 [root@service99 ~]# echo $B 26

declare命令结合-x选项,可以将局部变量设置为全局变量,这个与export命令的作用差不多:

[root@service99 ~]# declare -x NM="Tarena" //新建全局变量NM

如果要取消变量的全局属性,可以使用“+x”选项:

[root@service99 ~]# declare +x NM //将NM恢复为局部变量

declare命令结合-r选项,可以为变量设置“只读”属性,只读变量的值不允许再被修改,通常可用来保存一些固定的参数,避免无意中被修改:

[root@service99 ~]# echo $NM Tarena [root@service99 ~]# declare -r NM //将变量NM设置为只读 [root@service99 ~]# NM="Tarena IT Group." //重新赋值失败 -bash: NM: readonly variable

只读变量除了不能修改值以外,也无法被unset清除(若要清除只读变量,需要退出当前Shell程序):

[root@service99 ~]# unset NM -bash: unset: NM: cannot unset: readonly variable

使用declare命令,结合-a选项可声明一个数组(这个操作一般可不做),比如:

[root@service99 ~]# declare -a SVRS

直接执行declare -a,即不指定数组名参数时,会列出当前Shell环境中已定义的所有数组设置:

[root@service99 ~]# declare -a //查看已定义的数组

若要定义数组的成员,可以在declare声明时定义,也可以直接整体定义。整体赋值的格式为“数组名=(值1 值2 值3 .. ..)”,比如:

[root@service99 ~]# MY_SVRS=(www ftp mail club) [root@service99 ~]# set | grep "MY_" //查看数组定义结果

Shell中的语法要求是比较松散的,所以我们也可以直接为单个数组元素赋值,格式为“数组名[下标]=值”,每个数组元素的编号(即下标)从0开始。比如,以下操作会产生一个包括3个元素的数组:

[root@service99 ~]# WEB_SVRS[0]="www.tarena.com" //为第1个元素赋值 [root@service99 ~]# WEB_SVRS[1]="mail.tarena.com" //为第2个元素赋值 [root@service99 ~]# WEB_SVRS[2]="club.tarena.com" //为第3个元素赋值

为数组元素赋值时,并不要求每个成员都需要指定,下标也可以不连续。比如,可跳过下标3,直接为下标为4的元素赋值: 3)查看数组、查看数组元素

输出整个数组的内容:

[root@service99 ~]# echo ${MY_SVRS[@]}

查看第1个(下标为0的)数组元素:

[root@service99 ~]# echo ${MY_SVRS[0]}

输出数组中下标从1开始的2个元素:

[root@service99 ~]# echo ${MY_SVRS[@]:1:2}

查看数组的元素个数:

[root@service99 ~]# echo ${#MY_SVRS[@]}

当数组元素的内容较多时,直接输出 ${数组名[@]} 可能不方便查看,这种情况下可以利用循环遍历数组元素,通过连续取值的操作(或者 % 取模运算)限定每行只显示多少个IP地址(比如4个) 。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭