微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Bash基础

基础

read、array、declare/typeset 的使用

read

用于在console获取用户输入,在脚本执行中与用户进行交互,使用方法如下:

read -p '确定格式化硬盘吗?(y/n):' confirm
echo $confirm

参数:

  • -p:显示的输入提示
  • -t:等待时间,如果超时,叫忽略用户输入,以空输入作为变量值

array

定义:

var[0]=0
var[2]=2

使用:

echo ${var[0]}

Tips:允许稀疏数组存在

declare/typeset

用于指定变量数据类型,语法如下

declare [-aixr] variable

参数含已解释:

  • -a:定义类型为数组
  • -i:定义类型为整数
  • -x:转换变量为环境变量 [+x语法可以用于取消导出]
  • -r:设置readonly
  • -p:显示当前变量的定义情况[理解为输出定义当前变量的字符串]

举个栗子:

# 认为字符串类型
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}
@H_502_102@ @H_502_102@ @H_502_102@
语法 含义
${变量#匹配模式} 从开头匹配并删除,非贪婪模式
${变量##匹配模式} 从开头匹配并删除,贪婪模式
${变量%匹配模式} 从结尾匹配并删除,非贪婪模式
${变量%%匹配模式} 从结尾匹配并删除,贪婪模式
${变量/匹配模式/目标字符串} 字符串替换,非贪婪模式
${变量//匹配模式/目标字符串} 字符串替换,贪婪模式

变量认值

设定变量认值,在shell中很有用

val=defVal;
# 认为字符串
echo ${invalid-defaultVal}  -->> defaultVal
echo ${invalid-$val}  -->> defVal

invalid=    // 赋值空串
#空字符串认问题
echo ${invalid-defaultVal}  -->> 空串
echo ${invalid:-defaultVal}  -->> defaultVal

Tips:空字符串替换时语法为添加一个冒号

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐