Quando si include un carattere di citazione letterale all'interno di una stringa tra virgolette in Powershell, come posso evitare il carattere di citazione per indicare che è un delimitatore letterale anziché di stringa?
Quando si include un carattere di citazione letterale all'interno di una stringa tra virgolette in Powershell, come posso evitare il carattere di citazione per indicare che è un delimitatore letterale anziché di stringa?
Risposte:
A partire dal help about_quoting_rules
Per far apparire le virgolette doppie in una stringa, racchiudere l'intera stringa tra virgolette singole. Per esempio:
'As they say, "live and learn."'
L'output di questo comando è:
As they say, "live and learn."
È inoltre possibile racchiudere una stringa tra virgolette singole in una stringa tra virgolette doppie. Per esempio:
"As they say, 'live and learn.'"
L'output di questo comando è:
As they say, 'live and learn.'
Per forzare Windows PowerShell a interpretare letteralmente le virgolette doppie, utilizzare un carattere backtick. Ciò impedisce a Windows PowerShell di interpretare le virgolette come delimitatore di stringa. Per esempio:
"Use a quotation mark (`") to begin a string."
L'output di questo comando è:
Use a quotation mark (") to begin a string.
Poiché il contenuto delle stringhe a virgoletta singola viene interpretato letteralmente, non è possibile utilizzare il carattere backtick per forzare un'interpretazione letterale di caratteri in una stringa a virgoletta singola.
L'uso del carattere backtick per evitare altre virgolette nelle stringhe tra virgolette singole non è supportato nelle versioni recenti di PowerShell. Nelle versioni precedenti di PowerShell il carattere di escape backtick poteva essere utilizzato per evitare un carattere di virgolette doppie all'interno di una singola stringa tra virgolette come dettagliato nel help about_quoting
documento disponibile in quelle versioni di PowerShell.
'As they say, ''live and learn.'''
produce As they say, 'live and learn.'
, lo stesso del tuo secondo esempio.
Il personaggio di escape in Powershell è il "'" (apostrofo / tomba all'indietro).
Questo può essere usato per sfuggire alle virgolette e anche ai caratteri speciali (ad esempio, tab è `t).
bash
impazzire gli utenti. (Il cmd.exe
personaggio di fuga è ^
)
Per completare ciò che è già stato fornito qui, dovresti anche sapere che puoi evitare una citazione (singola o doppia) con la citazione stessa. Ciò significa che puoi farlo:
"Ecco un esempio di" "stringa tra virgolette doppie" "."
e questo:
'Questa volta è' 'a virgoletta singola' '.'
Il vantaggio offerto da questa sintassi è semplice: è più facile digitare la stessa virgoletta due volte che sfuggire a una citazione con un backtick.
singolo 'testo', quindi viene trattato come testo letterale, quindi evita qualsiasi carattere speciale usando "\"
ad es. questa stringa: "Come si suol dire," vivi e impara "." Diventa questa stringa 'Come si suol dire, \ "vivi e impara. \"'
PowerShell.exe -Command
e provando a passare virgolette doppie nel parametro (come, tecnicamente, è CMD che lo sfugge, ma è valido nel parametro del comando). imgur.com/1btjoQW
about_quoting
quell'aiuto. Esecuzione di PowerShell v5.1. L'escape delle virgolette doppie o l'annidamento di diversi tipi di virgolette funziona ancora come previsto.