基础
read、array、declare/typeset 的使用
read
用于在console获取用户输入,在脚本执行中与用户进行交互,使用方法如下:
read -p '确定格式化硬盘吗?(y/n):' confirm
echo $confirm
参数:
array
定义:
var[0]=0
var[2]=2
使用:
echo ${var[0]}
Tips:允许稀疏数组存在
declare/typeset
用于指定变量数据类型,语法如下
declare [-aixr] variable
参数含已解释:
举个栗子:
# 默认为字符串类型
sum=100+200
echo $sum >> 100+22
declare -i sum=100+200
echo $sum >> 300
# 取消导出的环境变量
sum=100
# 导出环境变量
declare -x sum
# 取消导出
declare +x sum
# 多个参数连用
declare -ixr sum="300" // 定义sum为整数且是不可变更的环境变量
变量内容变更
头匹配模式[#]:
variable=/test1/aaa/test/bin:/test2/aaa/test/bin:/root/wwwroot
# 会输出variable变量删除了从开头到test/bin结尾的最短匹配之后的内容[非贪婪模式,匹配最短的规则]
echo ${variable#/*test/bin:} -->> /test2/aaa/test/bin:/root/wwwroot
# 同上,不过是贪婪模式,区别在于使用了两个sharp
echo ${variable##/*test/bin:} -->> /root/wwwroot
尾匹配模式[%]:
variable=/root/wwwroot:/test1/aaa/test/bin:/test2/aaa/test/bin
# 会输出variable变量删除了从结尾最短匹配之后的内容[非贪婪模式,匹配最短的规则]
echo ${variable%:*bin} -->> /root/wwwroot:/test1/aaa/test/bin
# 同上,贪婪模式,尽可能长的匹配,进行删除
echo ${variable%%:*bin} -->> /root/wwwroot
替换:
# 部分替换
${var/pattern/targetStr}
# 全部替换
${var//pattern/targetStr}
语法 | 含义 |
---|---|
${变量#匹配模式} | 从开头匹配并删除,非贪婪模式 | ${变量##匹配模式} | 从开头匹配并删除,贪婪模式 |
${变量%匹配模式} | 从结尾匹配并删除,非贪婪模式 | ${变量%%匹配模式} | 从结尾匹配并删除,贪婪模式 |
${变量/匹配模式/目标字符串} | 字符串替换,非贪婪模式 | ${变量//匹配模式/目标字符串} | 字符串替换,贪婪模式 |
变量默认值
设定变量默认值,在shell中很有用
val=defVal;
# 默认为字符串
echo ${invalid-defaultVal} -->> defaultVal
echo ${invalid-$val} -->> defVal
invalid= // 赋值空串
#空字符串默认问题
echo ${invalid-defaultVal} -->> 空串
echo ${invalid:-defaultVal} -->> defaultVal
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。