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

Shell 特殊符號完整參考手冊:含義、用法與範例

編輯:Linux 教學

Shell 腳本中充滿特殊符號,掌握其含義能讓腳本更簡潔、健壯。本文系統整理常見符號的功能、語法與實戰範例。

符號速查總表

符號名稱核心功能典型範例
#井號註解、Shebang#!/bin/bash, # 這是註解
~波浪號家目錄、目錄堆疊cd ~, ~+(PWD), ~-(OLDPWD)
;分號命令分隔cd /tmp; ls
;;雙分號case 選項結束case $var in a) ;; esac
.點號當前目錄、來源檔案、正則匹配任一字元source .bashrc, ls -a
'str'單引號強引用,變數不展開echo '$HOME' → 輸出 $HOME
"str"雙引號弱引用,變數展開,通配符不展開echo "$HOME" → 輸出 /home/user
\`cmd\`反引號命令替換(舊語法)date=\`date +%F\`
$(cmd)命令替換命令替換(推薦,可巢狀)date=$(date +%F)
|管道標準輸出導向下一命令標準輸入ps aux | grep ssh
!驚嘆號邏輯非、歷史命令展開、正則否定if [ $? != 0 ], !!, ls file[!0-9]
:冒號空命令(真)、參數展開檢查、PATH 分隔: ${VAR?}, PATH=$PATH:$HOME/bin
?問號通配符匹配單一字元、狀態碼 $?ls file?.txt, echo $?
*星號通配符匹配任意字元、乘法、參數 $*ls *.log, let "a=2*3"
**雙星號次方運算、globstar 遞歸匹配let "a=2**3" (8), shopt -s globstar
$美元符變數替換、行尾錨點、參數 $# $@ $$echo $VAR, grep 'pattern$'
${}參數展開進階參數操作${var:-default}, ${var//old/new}
()括號子 Shell、陣列定義、命令群組(cd /tmp; ls), arr=(a b c)
(())雙括號算術運算、C 風格判斷((a++)), if ((a>b))
[]中括號測試命令、陣列索引、字元類別[ -f file ], ${arr[0]}
[[ ]]雙中括號增強測試(支援 && || 正則)[[ $str =~ ^[0-9]+$ ]]
{}大括號代碼塊、大展開、參數界定{ cmd1; cmd2; }, {a,b,c}
&&邏輯與前命令成功才執行後命令cmd1 && cmd2
||邏輯或前命令失敗才執行後命令cmd1 || cmd2
&背景執行命令放入背景執行sleep 10 &
\反斜線跳脫字元、續行echo \"hello\", cmd \\\n next
< >重導向輸入/輸出重導向cmd < in > out
<< >>Here-doc/追加內嵌文檔、追加重導向cat <<EOF\ntext\nEOF

重點補充說明

參數相關符號

  • $0:腳本名稱;$1~$9、${10}...:位置參數。
  • $*:所有參數視為單一字串;$@:保持各參數獨立(加引號時)。
  • $#:參數個數;$$:當前 Shell PID;$?:上一命令退出碼。

參數展開 ${} 進階用法

${var:-word}   # var 未設定或空時用 word(不修改 var)
${var:=word}   # 同上並將 word 賦值給 var
${var:?word}   # var 未設定輸出 word 並退出腳本
${var:+word}   # var 已設定時用 word,否則空
${var:offset:length}  # 子字串
${#var}        # 字串長度
${var#pattern} # 刪除最短前綴匹配
${var##pattern}# 刪除最長前綴匹配
${var%pattern} # 刪除最短後綴匹配
${var%%pattern}# 刪除最長後綴匹配
${var/old/new} # 替換首次
${var//old/new}# 替換全部

大括號展開 {}

echo file{1,2,3}.txt   # file1.txt file2.txt file3.txt
echo {a..z}            # a b c ... z
echo {1..10..2}        # 1 3 5 7 9 (步進 2)

熟練這些符號,能寫出更符合 Shell 風格、更高效的自動化腳本。

Copyright © Windows教程網 All Rights Reserved