Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Bash 變數字串操作大全:刪除與替換參數擴展語法完整圖解

編輯:關於 Linux

Bash 參數擴展(Parameter Expansion)提供強大的變數內容刪除與替換功能,無需呼叫 sed、awk 等外部工具,即可在腳本中高效處理字串。本文系統整理 #、##、%、%%、/、// 六大運算子語法與實戰範例。

環境變數 PATH 實測範例

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin

刪除操作:從左/右向內匹配刪除

語法方向匹配模式範例結果
${var#pattern}左→右最短匹配${PATH#/*bin:}刪除 /usr/local/sbin: → /usr/local/bin:/sbin:...
${var##pattern}左→右最長匹配(貪婪)${PATH##/*bin:}刪除至最後一個 bin: → /root/bin
${var%pattern}右→左最短匹配${PATH%:/*bin}刪除 :/root/bin → /usr/local/sbin:...:/usr/local/mysql/bin
${var%%pattern}右→左最長匹配(貪婪)${PATH%%:/*bin}刪除至最左邊 bin → /usr/local/sbin

替換操作:單次與全域

語法範圍範例結果
${var/old/new}僅第一次匹配${PATH/sbin/SBIN}/usr/local/SBIN:/usr/local/bin:/sbin:...
${var//old/new}全域替換所有匹配${PATH//sbin/SBIN}/usr/local/SBIN:/usr/local/bin:/SBIN:/bin:/usr/SBIN:...

記憶口訣

  • # 在鍵盤 $ 左側 → 從「左邊」開始刪
  • % 在鍵盤 $ 右側 → 從「右邊」開始刪
  • 單一符號 = 最短匹配;雙重符號 = 最長匹配(貪婪模式)
  • / 單斜線 = 首次替換;// 雙斜線 = 全域替換

進階技巧:結合通配符與錨點

# 刪除開頭路徑至特定目錄
${PATH#*/usr/local/}   # 保留 /usr/local 之後的內容

# 替換路徑分隔符
${PATH//:/\n}          # 將冒號換行,方便閱讀

# 條件替換:若變數未設定則使用預設值
${VAR:-default}        # VAR 為空或未設定時用 default
${VAR:=default}        # 並將 default 賦值給 VAR

速查總結表

語法功能模式
${var#pat}從左刪除最短匹配非貪婪
${var##pat}從左刪除最長匹配貪婪
${var%pat}從右刪除最短匹配非貪婪
${var%%pat}從右刪除最長匹配貪婪
${var/old/new}替換首次匹配—
${var//old/new}全域替換所有匹配—

應用場景

  • 路徑處理:提取目錄名、檔名、副檔名
  • 環境變數清理:移除特定路徑、替換分隔符
  • 腳本參數預處理:標準化輸入格式
  • 日誌分析:快速擷取關鍵欄位

掌握這六大參數擴展語法,能讓 Bash 腳本處理字串更簡潔、效能更高(避免子程序開銷),是 Shell 腳本進階的必備技能。

Copyright © Windows教程網 All Rights Reserved