文章目錄
- 前言
- 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 ...
- 多個判斷條件使用
||
時可以寫在[[]]
內,也可以寫在外部 - 對于字符串的規則變化可以使用分割在拼接的方式,這讓我想起來貪婪模式和非貪婪模式
弱者總是期盼機會降臨降臨到自己頭上,即使掉在旁邊也不敢去撿,恨不得全世界都逼著你接受才覺得拿的心安理得,有一點點阻礙便放棄了,生怕惹得任何一個人不高興,但誰又會在意你呢?強者會想盡一切辦法去爭取,努力了才可能靠近一點點~