about_Quoting_Rules

Rövid leírás

Az egy- és dupla idézőjelek PowerShellben való használatára vonatkozó szabályokat ismerteti.

Hosszú leírás

Az idézőjelek egy literális sztring megadására szolgálnak. Egy sztringet egyetlen idézőjelbe () vagy kettős idézőjelbe ('") ágyazhat.

Idézőjelek használatával is létrehozhat itt sztringet. Az itt szereplő sztring egy idézőjeles vagy dupla idézőjel, amelyben a rendszer szó szerint értelmezi az idézőjeleket. Az itt található sztringek több sort is átfoghatnak. Az itt szereplő sztringek összes sora sztringként van értelmezve, annak ellenére, hogy nem idézőjelek közé vannak zárva.

A távoli számítógépekre vonatkozó parancsokban idézőjelek határozzák meg a parancsnak a távoli számítógépen futó részeit. Egy távoli munkamenetben az idézőjelek azt is meghatározzák, hogy a parancs változói először a helyi számítógépen vagy a távoli számítógépen vannak-e értelmezve.

Idézőjeles sztringek

A kettős idézőjelek közé zárt sztring egy bővíthető sztring. A dollárjel ($) előtti változóneveket a rendszer a változó értékére cseréli, mielőtt a sztringet átadják a feldolgozási parancsnak.

Példa:

$i = 5
"The value of $i is $i."

A parancs kimenete a következő:

The value of 5 is 5.

A kettős idézőjeles sztringben a rendszer kiértékeli a kifejezéseket, és az eredményt beszúrja a sztringbe. Példa:

"The value of $(2+3) is 5."

A parancs kimenete a következő:

The value of 5 is 5.

Csak egyszerű változóhivatkozások ágyazhatók be közvetlenül egy bővíthető sztringbe. A tömbindexelést vagy taghozzáférést használó változóhivatkozásokat egy alexpresszióban kell elhelyezni. Példa:

"PS version: $($PSVersionTable.PSVersion)"
PS version: 7.2.0

Ha el szeretné különíteni a változó nevét a sztring további karaktereitől, fűzze hozzá kapcsos zárójelek közé ({}). Ez különösen akkor fontos, ha a változó nevét kettőspont (:kettőspont) követi. A PowerShell mindent figyelembe veszi a hatókör-meghatározó és a $: hatókör-meghatározó között, ami általában az értelmezés sikertelenségéhez vezet. Például hibát jelez, "$HOME: where the heart is." de "${HOME}: where the heart is." a célnak megfelelően működik.

Ha meg szeretné akadályozni, hogy egy változó értéke kettős idézőjeles sztringben szerepeljen, használja a Háttér karaktert (`), amely a PowerShell-feloldó karakter.

Az alábbi példában az első $i változót megelőző háttér karakter megakadályozza, hogy a PowerShell a változó nevét az értékére cserélje. Példa:

$i = 5
"The value of `$i is $i."

A parancs kimenete a következő:

The value of $i is 5.

Idézőjeles sztringek

Az egy idézőjelek közé zárt sztring szó szerinti sztring. A sztring pontosan a beíráskor lesz átadva a parancsnak. Nem történik helyettesítés. Példa:

$i = 5
'The value of $i is $i.'

A parancs kimenete a következő:

The value $i is $i.

Hasonlóképpen az egy idézőjeles sztringek kifejezéseit sem értékeli ki a függvény. Sztringkonstansként értelmezik őket. Példa:

'The value of $(2+3) is 5.'

A parancs kimenete a következő:

The value of $(2+3) is 5.

Idézőjelek belefűzve egy sztringbe

Ha idézőjeleket szeretne megjeleníteni egy sztringben, a teljes sztringet egyetlen idézőjelbe kell foglalnia. Példa:

'As they say, "live and learn."'

A parancs kimenete a következő:

As they say, "live and learn."

Egy idézőjeles sztringet is csatolhat egy dupla idézőjeles sztringhez. Példa:

"As they say, 'live and learn.'"

A parancs kimenete a következő:

As they say, 'live and learn.'

Vagy duplázza meg az idézőjeleket egy dupla idézőjel körül. Példa:

"As they say, ""live and learn."""

A parancs kimenete a következő:

As they say, "live and learn."

Ha egyetlen idézőjelet szeretne szerepeltetni egy idézőjelben, használjon egy második egymást követő egyetlen idézőjelet. Példa:

'don''t'

A parancs kimenete a következő:

don't

Ha arra szeretné kényszeríteni a PowerShellt, hogy szó szerint értelmezzen egy dupla idézőjelet, használjon háttérjelet. Ez megakadályozza, hogy a PowerShell sztringelválasztóként értelmezze az idézőjelet. Példa:

"Use a quotation mark (`") to begin a string."
'Use a quotation mark (`") to begin a string.'

Mivel az egy idézőjeles sztringek tartalma szó szerint értelmezve van, a háttér karakter literális karakterként lesz kezelve, és megjelenik a kimenetben.

Use a quotation mark (") to begin a string.
Use a quotation mark (`") to begin a string.

Itt található sztringek

Az itt szereplő sztringek idézőszabályai kissé eltérnek.

Az itt található sztring egy idézőjelekkel (jelekkel@) körülvett egyszeres vagy dupla idézőjeles sztring. Az itt szereplő sztringek idézőjeleit a rendszer szó szerint értelmezi.

Egy itt található sztring:

  • több sort is átfog
  • a nyitójellel kezdődik, majd egy új vonallal
  • végződik egy új vonallal, amelyet a zárójel követ
  • egyetlen sztring részeként tartalmazza a nyitó és a zárójelek közötti minden sort

A normál sztringekhez hasonlóan a változókat is felváltja az értékük a dupla idézőjeles itt-sztringekben. Az egy idézőjeles itt-sztringekben a változókat nem helyettesítik az értékük.

Az itt található sztringeket bármilyen szöveghez használhatja, de különösen hasznosak a következő típusú szövegekhez:

  • Literál idézőjeleket tartalmazó szöveg
  • Több sornyi szöveg, például EGY HTML- vagy XML-blokk szövege
  • Szkript vagy függvénydokumentum súgószövege

Az itt szereplő sztringek az alábbi formátumok egyikével rendelkezhetnek, amelyek <Enter> az ENTER billentyű lenyomásakor hozzáadott vonalas vagy új vonalas rejtett karaktert jelölik.

Dupla idézőjelek:

@"<Enter>
<string> [string] ...<Enter>
"@

Egyszeres idézőjelek:

@'<Enter>
<string> [string] ...<Enter>
'@

Feljegyzés

Az utolsó újvonalas karakter a zárójel része. Ez nincs hozzáadva az itt szereplő sztringhez.

Az itt szereplő sztring a nyitó és a záró jelek közötti összes szöveget tartalmazza. Az itt szereplő sztringben a rendszer szó szerint értelmezi az összes idézőjelet. Példa:

@"
For help, type "get-help"
"@

A parancs kimenete a következő:

For help, type "get-help"

Az itt található sztringek használatával egyszerűbbé teheti a parancsok sztringek használatát. Példa:

@"
Use a quotation mark, like ' or ", to begin a string.
"@

A parancs kimenete a következő:

Use a quotation mark, like ' or ", to begin a string.

Az egy idézőjeles itt-sztringekben a változók szó szerint értelmezve és pontosan reprodukálva lesznek. Példa:

@'
The $profile variable contains the path
of your PowerShell profile.
'@

A parancs kimenete a következő:

The $profile variable contains the path
of your PowerShell profile.

A kettős idézőjeles itt-sztringekben a változókat az értékük váltja fel. Példa:

@"
Even if you have not created a profile,
the path of the profile file is:
$profile.
"@

A parancs kimenete a következő:

Even if you have not created a profile,
the path of the profile file is:
C:\Users\User1\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.

Az itt található sztringek általában több sor egy változóhoz való hozzárendelésére szolgálnak. Az alábbi sztring például egy XML-oldalt rendel a $page változóhoz.

$page = [XML] @"
<command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10"
xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10"
xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10">
<command:details>
        <command:name>
               Format-Table
        </command:name>
        <maml:description>
            <maml:para>Formats the output as a table.</maml:para>
        </maml:description>
        <command:verb>format</command:verb>
        <command:noun>table</command:noun>
        <dev:version></dev:version>
</command:details>
...
</command:command>
"@

Az itt található sztringek a parancsmag bemenetének ConvertFrom-StringData is kényelmes formátumát képezik, amely az itt szereplő sztringeket kivonattáblákká alakítja. További információ: ConvertFrom-StringData.

Feljegyzés

A PowerShell lehetővé teszi, hogy a két- vagy egyjeles sztringek több sorra is kiterjedjenek az @ itt található sztringek szintaxisa nélkül. A teljes itt-sztringszintaxis azonban az előnyben részesített használat.

Bővíthető sztringek értelmezése

A kibontott sztringek nem feltétlenül ugyanúgy néznek ki, mint a konzolon látható alapértelmezett kimenet.

A gyűjtemények, beleértve a tömböket is, sztringekké alakulnak úgy, hogy egyetlen szóközt helyeznek el az elemek sztring-ábrázolásai között. A beállítási változó $OFSbeállításával másik elválasztó is megadható. További információt a beállítási változóban $OFStalál.

Bármely más típusú példány sztringgé alakul a ToString() metódus meghívásával, ami nem feltétlenül ad értelmes ábrázolásokat. Példa:

"hashtable: $(@{ key = 'value' })"
hashtable: System.Collections.Hashtable

Ha ugyanazt a kimenetet szeretné megkapni, mint a konzolban, használjon egy alexpressziót, amelybe a csövet csövezi Out-String. Alkalmazza a metódust Trim() , ha el szeretné távolítani a kezdő és záró üres sorokat.

"hashtable:`n$((@{ key = 'value' } | Out-String).Trim())"
hashtable:
Name                           Value
----                           -----
key                            value

A kulturális beállítások befolyásolják a sztring értelmezését

A ToString() metódusok a jelenlegi konfigurált kulturális beállításokat használják az értékek sztringekké alakításához. A következő PowerShell-munkamenet kultúrája például a következőre van állítva de-DE. Amikor a ToString() metódus sztringgé alakítja át az értéket $x , a tizedesjelhez vesszőt (,) használ. A metódus emellett sztringgé ToString() alakítja a dátumot a német területi beállításoknak megfelelő formátummal.

PS> Get-Culture

LCID             Name             DisplayName
----             ----             -----------
1031             de-DE            German (Germany)

PS> $x = 1.2
PS> $x.ToString()
1,2

PS> (Get-Date 2024-03-19).ToString()
19.03.2024 00:00:00

A PowerShell azonban az invariáns kultúrát használja a bővíthető sztringkifejezések értelmezésekor.

PS? "$x"
1.2

PS> "$(Get-Date 2024-03-19)"
03/19/2024 00:00:00

Idézett sztringek átadása külső parancsoknak

Egyes natív parancsok idézőjeleket tartalmazó argumentumokat várnak. A PowerShell értelmezi az idézett sztringet, mielőtt átadja a külső parancsnak. Ez az értelmezés eltávolítja a külső idézőjeleket.

Erről a viselkedésről további információt a about_Parsing cikkben talál.

Lásd még