PowerShell 中的字符串插值

  1. PowerShell 中的變量是什麼?
  2. Windows PowerShell 中的字符串插值
  3. PowerShell 中的環境變量的字符串插值
  4. PowerShell 中的轉義字符的字符串插值
  5. PowerShell 中使用特殊字符的變量的字符串插值
  6. PowerShell 中使用子表達式運算符的字符串插值
  7. 結論
PowerShell 中的字符串插值

在 PowerShell 中,字符串插值是一個強大的特性,它通過在字符串中嵌入變量值、表達式和命令來促進動態字符串格式化。本綜合指南深入探討字符串插值的複雜性,提供詳細的見解、示例和該特性的實用應用。

字符串插值用佔位符替換字符串中的變量值。此外,字符串插值的過程會在字符串中顯示變量的值。

Windows PowerShell 的字符串插值提供了一種更具可讀性、易於閱讀和方便的語法來創建格式化字符串。本文將討論在 Windows PowerShell 中進行字符串插值時使用變量的方法。

PowerShell 中的變量是什麼?

在討論 Windows PowerShell 字符串插值之前,我們應首先討論達成此目的的一個關鍵要求:Windows PowerShell 變量。

PowerShell 中的變量作為存儲數據的容器,允許用戶在腳本執行過程中存儲和操作信息。它們作為表示特定值或對象的符號名稱,提供了一種在 PowerShell 腳本中引用和處理數據的方法。

PowerShell 中變量的關鍵方面:

聲明和命名

聲明:

PowerShell 中的變量使用 $ 符號後跟名稱來聲明。

示例:

$my_var = "Hello World!"

命名規則:

  • 必須以字母或下劃線開頭。
  • 可以包含字母、數字和下劃線。
  • 不區分大小寫($variable$Variable 參考的是同一個)。

數據類型

動態類型:

PowerShell 使用動態類型,允許變量在不明確聲明類型的情況下持有不同類型的數據。

示例:

$number = 10
$text = "Sample text"

範圍

變量可以具有不同的範圍,決定它們在腳本中的可見性和訪問性。

本地:限於當前範圍或函數。
腳本:在當前腳本中可見。
全局:在整個 PowerShell 會話中可訪問。

賦值和修改

賦值:

使用賦值運算符(=)為變量賦值。

示例:

$myVariable = "New value"

修改:

通過賦予新值或更改現有值來修改變量。

示例:

$number = $number + 5

我們將使用這些變量在 Windows PowerShell 中執行字符串插值。

Windows PowerShell 中的字符串插值

字符串插值是指直接在字符串中嵌入變量、表達式或命令以生成動態內容的過程。

常見語法:

  • 雙引號字符串("..."):用雙引號括起的字符串允許進行字符串插值。
  • 插值語法:$variable$($expression)$(command)

插值變量

讓我們通過在 Windows PowerShell 中使用字符串插值的示例來理解。

示例代碼:

$company = "XYZ Company"
Write-Output "Welcome to $company"

在上述 PowerShell 腳本中,$company 變量包含 XYZ Company 字符串值。在雙引號 "" 內部,Windows PowerShell 插值字符串變量名稱並在以下語句中顯示結果。

輸出:

Welcome to XYZ Company

如果我們將變量名稱放在單引號中 '',則將顯示變量名稱,如下所示。

示例代碼:

$company = "XYZ Company"
Write-Output 'Welcome to $company'

輸出:

Welcome to $company

這種輸出發生的原因是,任何用單引號括起的內容都將內部視為字面表達式。因此,請確保在插值字符串時使用雙引號。

插值表達式

$age = 25
Write-Host "In five years, I'll be $($age + 5) years old."

字符串插值,由 $() 表示,允許在字符串中包含變量值或表達式。在這種情況下,它通過將 5 加到存儲在 $age 變量中的值上,動態計算未來的年齡,使輸出動態並反映五年後的預期年齡。

插值命令

$currentDate = Get-Date
Write-Host "The current date is $(Get-Date)."

結果將顯示執行 Write-Host 行時刻的當前日期和時間,通過插值動態地將來自 Get-Date cmdlet 的更新值納入字符串中。

PowerShell 中的環境變量的字符串插值

環境變量是存儲在操作系統中的動態命名值,持有關於系統環境、用戶首選項和配置設置的信息。

在 Windows PowerShell 中,通過 Env: 變量表示的環境變量存儲操作系統環境和程序。這些信息的詳細信息包括操作系統路徑、Windows 安裝目錄的位置、操作系統使用的過程數等等。

常見環境變量:

  • $env:USERNAME:表示當前用戶的用戶名。
  • $env:COMPUTERNAME:存儲計算機名稱。
  • $env:TEMP:指定臨時文件目錄。
  • $env:PATH:包含系統的可執行文件路徑。

在 Windows PowerShell 中,環境變量可以像其他標準變量一樣在字符串內進行插值。

示例代碼:

Write-Output "My computer name: $Env:COMPUTERNAME"

在上述 PowerShell 腳本中,$Env: COMPUTERNAME 在雙引號中顯示變量值並將其與字符串串聯。

輸出:

My computer name: WINDOWS-PC01

PowerShell 中的轉義字符的字符串插值

儘管我們討論了在字符串插值期間應使用雙引號,但在某些情況下將變量放入雙引號中並不會提供預期的結果。這方面的一個例子是轉義字符。

轉義字符是一種字符,用於調用字符序列中後續字符的替代解釋。轉義字符在編程語言中很常見,因為某些符號在程序編譯時被使用。

PowerShell 中的轉義字符是用來表示在字符串中可能具有特殊含義的字符的特殊序列。它們允許在字符串中包含特殊字符或控制格式。

常見轉義字符:

  • 反引號(`):用於轉義具有特殊含義的字符。
  • 雙引號("):允許在雙引號字符串內進行插值和表達式評估。
  • 換行符(``n`):表示換行字符。
  • 制表符(``t`):插入水平製表符。
  • 回車符(``r`):將光標移到行的開始位置。

例如,在 Windows PowerShell 中,美元符號 $ 是用來定義變量的最常見運算符之一。我們將在下面的示例中使用美元符號。

示例代碼:

$price = 99
Write-Output "Discounted Price: $$price"

在上述 Windows PowerShell 腳本中,雙引號中的 $price 不給出預期的輸出,因為腳本環境以不同的方式解釋雙美元符號 $$

輸出:

Discounted Price: Discounted Price: $$priceprice

使用 Windows PowerShell 轉義字符來進行字符串插值,以下可獲得所需的輸出。

示例代碼:

$price = 99
Write-Output "Discounted Price: `$$price"

輸出:

Discounted Price: $99

PowerShell 中使用特殊字符的變量的字符串插值

如前所述,以美元符號 $ 開頭的變量名稱可以包含字母數字字符和特殊字符。PowerShell 中的變量可以包含特殊字符,例如反引號(`)、美元符號($)或引號(")。

定義變量的最佳做法是僅包括字母數字字符和下劃線 _ 字符。包含其他特殊字符的變量名稱(包括空格)難以使用,因此應當避免。

但是,我們並不是說使用包含特殊字符的變量是不可能的。如果情況無法避免,我們可以使用美元符號和大括號 ${} 來轉義變量名稱中的所有特殊字符,包括空格。

示例代碼:

${this is a variable!} = "Hello"
Write-Output "${this is a variable!} World!"

輸出:

Hello World!

儘管 ${this is a variable!} 變量的名稱不尋常,但它已被創建並分配了值 "Hello"

Write-Output 的字符串插值將變量的值與文本 " World!" 連接,最終輸出 "Hello World!"

PowerShell 中使用子表達式運算符的字符串插值

PowerShell 中的子表達式運算符($())允許在字符串中評估表達式、命令或子腳本。

在 Windows PowerShell 中,我們可以使用子表達式運算符 $() 在表達式內執行表達式,類似於字符串插值。我們通過用美元符號和括號 () 括起要運行的任何表達式來做到這一點。

示例代碼:

$num1 = 10
$num2 = 5

Write-Output "$num1 + $num2 = $($num1+$num2)"

輸出:

10 + 5 = 15

字符串插值將 $num1$num2 的值(105,分別)以及通過將 $num1$num2 相加而獲得的算術運算結果(15)作為文本包含在內。

結論

本文探討了 PowerShell 的字符串插值,通過在字符串中嵌入變量值、表達式和命令來實現動態字符串格式化。內容包括:

  1. PowerShell 中的變量:這些容器在未明確聲明類型的情況下保存各種數據類型並遵循特定的命名規則。
  2. 字符串插值基本:這涉及到在雙引號字符串中嵌入 $variables$($expressions)$(commands) 以獲得動態內容。
  3. 使用示例:
    • 在字符串中利用變量獲取動態內容。
    • 將環境變量($Env:VARIABLE_NAME)納入系統相關信息。
    • 使用轉義字符(`)來處理字符串中的特殊字符或格式。
    • 使用 ${} 語法創建和使用包含特殊字符或空格的變量。
    • 利用子表達式運算符 $() 在字符串內進行複雜計算。

理解這些字符串插值技術為 PowerShell 用戶提供了強大的動態字符串創建工具,有助於腳本格式的可讀性和靈活性。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相關文章 - PowerShell String