首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Shell 字符串操作大全:內置操作符比外部命令快百倍

     編輯:Java 相關知識

拒絕 awk/sed:Shell 內置參數展開與字符串操作完全指南

Shell 腳本中字符串處理,內置操作符避免啟動外部進程,效能碾壓 awk/sed/expr。實測長度獲取快 50+ 倍。掌握這套語法,腳本又快又優雅。

1. 變量值判斷與默認值

2. 字符串長度、截取、刪除、替換

語法含義備註
${var:-DEFAULT}var 未設置或為空時用 DEFAULT最常用
${var:=DEFAULT}同上且將 DEFAULT 賦給 var會修改變量
${var:+OTHER}var 已設置且非空時用 OTHER
${var:?ERR_MSG}var 未設置則拋錯誤並退出腳本健壯性
${!prefix*}匹配所有 prefix 開頭的已聲明變量調試利器
操作語法示例
長度${#str}${#"hello"} → 5
從位置截取${str:pos} / ${str:pos:len}${str:2:3}
刪除前綴(最短/最長)${str#pat} / ${str##pat}路徑取文件名:${path##*/}
刪除後綴(最短/最長)${str%pat} / ${str%%pat}路徑取目錄:${path%/*}
替換首個/全部${str/pat/rep} / ${str//pat/rep}斜槓轉義:${str//\//\\}
前綴/後綴替換${str/#pat/rep} / ${str/%pat/rep}

注意:pattern 支持正則表達式。

3. 實測效能對比

# 內置操作符
time for i in {1..10000}; do a=${#test}; done
# real 0m0.173s

# expr 外部命令
time for i in {1..10000}; do a=$(expr length "$test"); done
# real 0m9.734s

結論:內置操作符快 50+ 倍。腳本編程鐵律:能用內置絕不用外部命令。

4. 官方工具對比

  • 取文件名:basename /path/to/file ≡ ${path##*/}
  • 取目錄:dirname /path/to/file ≡ ${path%/*}

內置操作符語法雖稍顯晦澀,但效能優勢壓倒性,核心腳本必掌握。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved