PowerShell における文字列補間

  1. PowerShell における変数とは?
  2. Windows PowerShell での文字列補間
  3. PowerShell での環境変数を使用した文字列補間
  4. PowerShell でのエスケープ文字を使用した文字列補間
  5. PowerShell における特殊文字を持つ変数を用いた文字列補間
  6. PowerShell におけるサブエクスプレッション演算子を使用した文字列補間
  7. 結論
PowerShell における文字列補間

PowerShell における文字列補間は、変数の値、式、およびコマンドを文字列内に埋め込むことによって動的な文字列形式を提供する強力な機能です。この包括的なガイドでは、文字列補間の複雑さを深く掘り下げ、この機能の詳細な洞察、例、および実用的なアプリケーションを提供します。

文字列補間は、文字列内のプレースホルダーを使用して変数の値を置き換えます。また、文字列補間のプロセスは、文字列内に変数の値を表示します。

Windows PowerShell の文字列補間は、フォーマットされた文字列を作成するための、より読みやすく、理解しやすい便利な構文を提供します。この記事では、Windows PowerShell における文字列補間中に変数を使用する方法について説明します。

PowerShell における変数とは?

Windows PowerShell の文字列補間について議論する前に、これを達成するための重要な要件の 1つである 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."

文字列補間は $() によって示され、文字列内に変数の値や式を含めることを可能にします。このケースでは、$age 変数に保存された値に 5 を加えて将来の年齢を動的に計算します。これにより、出力は動的になり、5 年後の期待される年齢を反映します。

コマンドの補間

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

結果は、Write-Host 行が実行される瞬間の現在の日付と時刻を表示し、文字列内に更新された値を動的に組み込むことができます。

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 では、ドル記号 $ は変数を定義するために使用される最も一般的な演算子の 1つです。以下の例でドル記号を使用します。

例のコード:

$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 ユーザーは動的な文字列作成のための強力なツールを得ることができ、スクリプトのフォーマットにおける可読性と柔軟性が向上します。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 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