在 PowerShell 中,單引號(')與雙引號(")擁有截然不同的行為特性,主要差異在於變數替換與字元轉義的處理方式。掌握這兩種引號的規則,是撰寫穩健腳本的基礎。
| 引號類型 | 變數替換 | 字元轉義 | 說明 |
|---|---|---|---|
| 單引號 | 不支援 | 不支援 | 內容原樣輸出,所見即所得 |
| 雙引號 | 支援 | 支援 | 允許變數展開與轉義序列處理 |
判斷依據以命令最外層的引號為準。
$a = "World"
"Hello, $a" # 輸出:Hello, World
'Hello, $a' # 輸出:Hello, $a
連寫兩個單引號即可輸出一個單引號:
$a = "PowerShell"
'I''m $a' # 輸出:I'm PowerShell
直接書寫雙引號,無需轉義:
'He said "Hello"' # 輸出:He said "Hello"
連寫兩個雙引號輸出一個:
$a = "PowerShell"
"""My name is $a""", this program said."
# 輸出:"My name is PowerShell", this program said.
PowerShell 使用反引號(`,鍵盤 F1 上方、波浪號同鍵)作為轉義字元:
| 轉義序列 | 代表字元 |
|---|---|
| `' | 單引號 |
| `" | 雙引號 |
| `0 | 空值 (NULL) |
| `a | 警示音 |
| `b | 退格鍵 |
| `f | 換頁符 |
| `n | 新行 |
| `r | 歸位符 |
| `t | 水平定位符 |
| `v | 垂直定位符 |
在雙引號中,於變數名前加反引號可阻止替換:
$a = "PowerShell"
"""My name is `$a""", this program said."
# 輸出:"My name is $a", this program said.
當命令過長時,可在適當位置(如管道符後)使用反引號換行續寫:
Get-WmiObject Win32_NetworkAdapterConfiguration |
Get-Member -MemberType Methods |
Format-List
這不僅提升可讀性,也便於腳本維護與除錯。執行結果與單行寫法完全一致。
熟練運用這些規則,能讓您的 PowerShell 腳本更簡潔、更健壯。