ARGOMENTO
about_Quoting_Rules
DESCRIZIONE BREVE
Descrive le regole per l'utilizzo delle virgolette singole e
doppie in Windows PowerShell.
DESCRIZIONE DETTAGLIATA
Le virgolette sono utilizzate per specificare una stringa
letterale. Una stringa può essere racchiusa tra virgolette
singole (') o doppie (").
Le virgolette sono utilizzate anche per creare una stringa here.
Una stringa here è una stringa racchiuse tra virgolette singole o
doppie in cui le virgolette sono interpretate letteralmente. Una
stringa here si può estendere su più righe. Tutte le righe di una
stringa here vengono interpretate come stringhe, anche se non
sono racchiuse tra virgolette.
Nei comandi ai computer remoti, le virgolette definiscono le
parti del comando che vengono eseguite nel computer remoto. In
una sessione remota, le virgolette determinano anche se le
variabili in un comando sono interpretate prima nel computer
locale o nel computer remoto.
Stringhe racchiuse tra virgolette semplici e doppie
Se si racchiude una stringa tra virgolette doppie, i nomi di
variabile preceduti dal simbolo del dollaro ($) vengono
sostituiti con il valore della variabile prima che la stringa
venga passata al comando per essere elaborata.
Ad esempio:
$i = 5
"Il valore di $i è $i."
L'output di questo comando è il seguente:
Il valore di 5 è 5
Inoltre, in una stringa racchiusa tra virgolette doppie,
vengono valutate le espressioni e il risultato viene inserito
nella stringa. Ad esempio:
"Il valore di $(2+3) è 5."
L'output di questo comando è il seguente:
Il valore di 5 è 5
Se si racchiude una stringa tra virgolette semplici, la stringa
viene passata al comando esattamente come la si digita. Non
viene eseguita alcuna sostituzione. Ad esempio:
$i = 5
'Il valore di $i è $i.'
L'output di questo comando è il seguente:
Il valore di $i è $i.
Analogamente, le espressioni in stringhe racchiuse tra
virgolette singole non sono valutate. Vengono interpretati come
valori letterali. Ad esempio:
'Il valore di $(2+3) è 5.'
L'output di questo comando è il seguente:
Il valore di $(2+3) è 5.
Per impedire la sostituzione di un valore di variabile in una
stringa racchiusa tra virgolette doppie, utilizzare il
carattere di apice inverso (`)(ASCII 96) che rappresenta il
carattere di escape di Windows PowerShell.
Nell'esempio seguente, il carattere di apice inverso che
precede la prima variabile $i impedisce che il nome della
variabile venga sostituito con il suo valore in Windows
PowerShell. Ad esempio:
$i = 5
"Il valore di `$i è $i."
L'output di questo comando è il seguente:
Il valore di $i è 5.
Per fare sì che le virgolette doppie vengano visualizzate in
una stringa, racchiudere l'intera stringa tra virgolette
semplici. Ad esempio:
'Dice il detto: "Vivi e lascia vivere".'
L'output di questo comando è il seguente:
Dice il detto: "Vivi e lascia vivere".
È anche possibile includere una stringa racchiusa tra
virgolette singole in una stringa racchiusa tra virgolette
doppie. Ad esempio:
"Dice il detto: 'Vivi e lascia vivere'."
L'output di questo comando è il seguente:
Dice il detto: 'Vivi e lascia vivere'.
In alternativa, raddoppiare le virgolette attorno a una frase
racchiusa tra virgolette doppie. Ad esempio:
"Dice il detto: ""Vivi e lascia vivere""."
L'output di questo comando è il seguente:
Dice il detto: "Vivi e lascia vivere".
Per includere una virgoletta singola in una stringa racchiusa
tra virgolette singole, utilizzare una seconda virgoletta
singola consecutiva. Ad esempio:
'l''esempio'
L'output di questo comando è il seguente:
l'esempio
Per forzare Windows PowerShell a interpretare letteralmente una
virgoletta doppia, utilizzare un carattere di apice inverso. In
questo modo si impedisce a Windows PowerShell di interpretare
le virgolette come un delimitatore di stringa. Ad esempio:
"Utilizzare le virgolette (`") per iniziare una stringa."
Poiché il contenuto delle stringhe racchiuse tra virgolette
singole è interpretato letteralmente, non è possibile
utilizzare il carattere di apice inverso per forzare
l'interpretazione di un carattere letterale in una stringa
racchiusa tra virgolette singole.
Ad esempio, il comando seguente genera un errore poiché Windows
PowerShell non riconosce il carattere di escape. La seconda
virgoletta viene, viceversa, interpretata come la fine della
stringa.
PS C:\> 'Utilizzare una virgoletta (`') per iniziare una stringa.'
Token ')' imprevisto nell'espressione o nell'istruzione.
At line:1 char:27
+ 'Utilizzare una virgoletta (`') <<<< per iniziare una
stringa.'
Stringhe here racchiuse tra virgolette semplici e doppie
Le regole di uso delle virgolette per le stringe here sono
leggermente diverse.
Una stringa here è una stringa racchiuse tra virgolette singole
o doppie in cui le virgolette sono interpretate letteralmente.
Una stringa here si può estendere su più righe. Tutte le righe
di una stringa here vengono interpretate come stringhe, anche
se non sono racchiuse tra virgolette.
Come nelle stringhe normali, le variabili sono sostituite dal
loro valore nelle stringhe here racchiuse tra virgolette
doppie. Nelle stringhe here racchiuse tra virgolette singole,
le variabili non sono sostituite dal loro valore.
È possibile utilizzare stringhe here per qualsiasi testo, ma sono
particolarmente utili per i tipi di testo seguenti:
- testo che contiene virgolette letterali;
- più righe di testo, ad esempio il testo in un documento HTML o XML;
- il testo della Guida per uno script o funzione.
Una stringa here può presentare qualsiasi dei formati seguenti,
dove <Invio> rappresenta il carattere nascosto di avanzamento
di riga o di nuova riga che viene aggiunto quando si preme il
tasto INVIO.
Formato 1:
@"<Invio>
<string> [string] ...<Invio>
"@
Formato 2:
@'<Invio>
<string> [string] ...<Invio>
'@
In entrambi i formati, la virgoletta di chiusura deve essere il
primo carattere nella riga.
Una stringa here contiene tutto il testo tra i due caratteri
nascosti.
Nella stringa here, tutte le virgolette sono interpretate
letteralmente.
Ad esempio:
@"
Per accedere alla Guida, digitare "get-help"
"@
L'output di questo comando è il seguente:
Per accedere alla Guida, digitare "get-help"
L'utilizzo di una stringa here può semplificare l'utilizzo di
una stringa in un comando. Ad esempio:
@"
Utilizzare una virgoletta (') per iniziare una stringa.
"@
L'output di questo comando è il seguente:
Utilizzare una virgoletta (') per iniziare una stringa.
Nelle stringhe here racchiuse tra virgolette singole, le
variabili sono interpretate letteralmente e vengono riprodotte
esattamente. Ad esempio:
@'
La variabile $profile contiene il percorso
del profilo di Windows PowerShell.
'@
L'output di questo comando è il seguente:
La variabile $profile contiene il percorso
del profilo di Windows PowerShell.
Nelle stringhe here racchiuse tra virgolette doppie, le
variabili sono sostituite dai loro valori. Ad esempio:
@"
Anche se non è stato creato un profilo, il percorso del
file di profilo è:
$profile.
"@
L'output di questo comando è il seguente:
Anche se non è stato creato un profilo
il percorso del file di profilo è:
C:\Users\User01\Documenti\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.
Le stringhe here sono utilizzate in genere per assegnare più
righe a una variabile. Ad esempio, la stringa here seguente
assegna una pagina di XML alla variabile $page.
$page = [XML] @"
<command:command xmlns:maml="https://schemas.microsoft.com/maml/2004/10"
xmlns:command="https://schemas.microsoft.com/maml/dev/command/2004/10"
xmlns:dev="https://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>
"@
Le stringhe here rappresentano inoltre un formato pratico per
l'input nel cmdlet ConvertFrom-StringData che converte le
stringhe here in tabelle hash. Per ulteriori informazioni,
vedere ConvertFrom-StringData.
VEDERE ANCHE
about_Escape_Characters
ConvertFrom-StringData