文章目录
- 前言
- if通配符判断
- if判断多个条件
- 规则变化字符串的两个示例
- 改变中间段数字
- 改变末尾段数字
- 总结
前言
科技的发展会带来习惯的改变,特别是对于我们这批敲代码的,之前还积累一些奇巧淫技,想着在必要的时候卖弄一下,自从生成式AI火了以后,这些技巧再无用武之地,只要无脑丢给AI就好了,他会给你实现方法,完全不用关心过程,当然,如果你想了解过程,AI也能一步步分解,直到你完全了解为止,用什么查什么,完全不用担心,比你背下来写的还快,所以再背下来已经没有用了。好久没总结了,总觉得没有沉淀,实际上很多东西不需要沉淀了,但还是写写近几天用到的东西吧。
if通配符判断
if [[ "$line" == Player_* ]]; thenecho "line 是以 Player_ 开头的数据"
fi
直接用 *
匹配变化的部分即可,这里注意 Player_*
两侧不能使用 "
包裹
if判断多个条件
if [[ "$line" == Player_* || "$line" == Pet_* || "$line" == "Home" ]]; thenecho "line 是以 Player_ 或 Pet_ 开头的数据,也可能是 Home"
fi
if [[ "$line" == Player_* ]] || \[[ "$line" == Pet_* ]] || \[[ "$line" == "Home" ]]; thenecho "line 是以 Player_ 或 Pet_ 开头的数据,也可能是 Home"
fi
两种写法,我觉得第二种写法在条件较多时更清晰一些
规则变化字符串的两个示例
改变中间段数字
将字符串 Players_00000001-300
中间数字加200,实现代码如下:
line="Players_00000001-300"
prefix="${line%%_*}_" # 提取前缀(到第一个 _ 为止)注意末尾加了_
middle="${line#*_}" # 剩下部分为 00000001-300
number="${middle%-*}" # 提取 00000001
suffix="${middle#*-}" # 提取 300new_number=$(printf "%08d" $((10#$number + 200))) # 10#$number 防止数字有前导 0 被解释为八进制,保留8位,不足补0
echo "${prefix}${new_number}-${suffix}" # 输出结果 Players_00000201-300
改变末尾段数字
将字符串 Community#Rank#00000001
末尾数字加200,实现代码如下:
line="Community#Rank#00000001"# 拆分前两段和最后的数字部分
prefix="${line%#*}" # 删除最后一个 # 后的部分,保留前缀,Community#Rank
number="${line##*#}" # 删除最前面的 # 及其前缀,保留最后数字,00000001# 计算新数字(保持8位,不足补0)
new_number=$(printf "%08d" $((10#$number + 200))) # 10#$number 防止数字被当作八进制# 组合结果
echo "${prefix}#${new_number}" # 输出结果 Community#Rank#00000201
总结
- Shell中可以使用通配符判断字符串匹配
if [[ "$line" == Player_* ]]; then ...
- 多个判断条件使用
||
时可以写在[[]]
内,也可以写在外部 - 对于字符串的规则变化可以使用分割在拼接的方式,这让我想起来贪婪模式和非贪婪模式
弱者总是期盼机会降临降临到自己头上,即使掉在旁边也不敢去捡,恨不得全世界都逼着你接受才觉得拿的心安理得,有一点点阻碍便放弃了,生怕惹得任何一个人不高兴,但谁又会在意你呢?强者会想尽一切办法去争取,努力了才可能靠近一点点~