shell脚本--数据类型

本文详细介绍了bash脚本中的三种数据类型:整型、字符串型和数组。对于整型,通过`declare -i`进行定义;字符串型是bash默认处理方式;而在数组部分,虽然bash中的数组操作相对简单,但仍然是重要的数据结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

bash脚本–数据类型

一、整型

    定义:declare -i varName=value

二、字符串型

    bash脚本中变量类型默认按字符串处理此处不做说明。
    字符串处理:

1、切片
	${varName:offset:number}	#偏移offset个字符向后取number个字符
		例:str=abcabc	#后文均使用该变量演示
		echo ${str:1:3}		#输出bca
	${varName:offset}	#偏移offset个字符取至末端
		例:echo ${str:2}	#输出cabc		
	${varName: -number}	#取末端number个字符
		例:echo ${str: -2}	#输出bc,冒号后必须跟空格
		
2、按模式匹配取子串
	${varName#*word}	#从左至右匹配,删除第一次匹配到word字符及之前的所有字符
		例:echo ${str#*b}	#输出cabc
	${varName##*word}	#从左至右匹配,删除最后一次匹配到word(字符)及之前的所有字符
		例:echo ${str##*b}	#输出c		
	${varName%word*}	#从右至左匹配,删除第一次匹配到word字符及之前的所有字符
		例:echo ${str%b*}	#输出abca
	${varName%%word*}	#从右至左匹配,删除最后一次匹配到word字符及之前的所有字符
		例:echo ${str%%b*}	#输出a
3、查找替换
	${varName/pattern/substi}	#查找变量中第一次匹配到的pattern字符串替换为substi
		例: echo ${str/bc/d}	#输出adabc
	${varName//pattern/substi} 	#查找变量中所有匹配到的pattern字符串替换为substi
		例: echo ${str//bc/d} 	#输出adad
	${varName/#pattern/substi}	#查找行首被pattern匹配的内容替换为substi
		例:echo ${str/#ab/dd}	#输出ddcabc
	${varName/%pattern/substi}	#查找行尾被pattern匹配的内容替换为substi
		例:echo ${str/%bc/dd}	#输出abcadd
	注:删除则为不指定substi,如echo ${str//ab},输出cc。
4、其他
	${varName:-value}	#如果varName为空则返回value,并不会修改变量本身,输出的value是命令执行结果
	${varName:=value}	#如果varName为空,则返回value并赋值给varName,不为空则返回其本省值,等同于varName=${varName:-value}
	${varName:+value}	#如果varName为空不做处理,不为空则返回value,varName本身不变
	${varName:?errorInfo}	#varName如果为空则返回errorInfo,并会输出到错误输出中,不为空则返回其原值
	${varName^^}	#将字符串中的小写字母转为大写字母
	${varName,,}	#将字符串中的大写字母转为小写字母
三、数组
定义:declare -a arrayName

1、赋值
	arrayName[IDX]=value	#单个元素赋值
	arrayName=([IDX]=value [IDX]=value)	#部分元素赋值
	arrayName=(value1 value2 value3)	#所有元素完全赋值
2、引用
	${arrayName[IDX]}	#引用单个元素,不指定下标则表示引用第0个元素
	${arrayName[@]}	#引用所有元素,也可用${arrayNanme[*]}
	${#arrayName[@]}	#返回数组元素个数,也可用${#arrayName[*]}
3、切片
	${arrayName[@]:offset:number}	#偏移offset个元素(从下标为offset的元素开始),共number个
4、撤销、追加元素
	arrayName[${#arrayName[@]}]=value	#在数组最后追加一个元素并赋值
	unset arrayName[IDX]	#撤销某个元素,不会将其后面的元素下标向前推进1,但是在使用${#arrName[@]}时,数组元素个数会减1,即变为稀疏数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值