Powershell'deki gerçek kaçış karakteri nedir?


51

Powershell'de kote edilmiş bir dizgenin içerisine değişmez bir alıntı karakteri eklerken, bir dize sınırlayıcı yerine değişmez olduğunu göstermek için alıntı karakterinden nasıl kaçabilirim?

Yanıtlar:


75

itibaren help about_quoting_rules

Çift tırnak işaretlerinin bir dizede görünmesini sağlamak için, dizenin tamamını tek tırnak işareti içine alın. Örneğin:

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

Bu komutun çıktısı:

As they say, "live and learn."

Ayrıca, tek tırnaklı bir dize çift tırnaklı bir dize içine alabilirsiniz. Örneğin:

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

Bu komutun çıktısı:

As they say, 'live and learn.'

Windows PowerShell'i çift tırnak işaretini tam anlamıyla yorumlamaya zorlamak için bir backtick karakteri kullanın. Bu, Windows PowerShell'in tırnak işaretini bir dize sınırlayıcı olarak yorumlamasını önler. Örneğin:

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

Bu komutun çıktısı:

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

Tek tırnaklı dizgilerin içeriği tam anlamıyla yorumlandığından, tek tırnaklı bir dizgede değişmez bir karakter yorumlamasını zorlamak için backtick karakterini kullanamazsınız.

Tek tırnaklı dizelerde diğer tırnak işaretlerinden kaçmak için backtick karakterinin kullanılması, PowerShell'in son sürümlerinde desteklenmez. PowerShell'in önceki sürümlerinde, backtick escape karakteri help about_quoting, PowerShell'in bu sürümlerinde mevcut olan belgede detaylandırıldığı gibi, tek bir alıntı dizgede çift tırnak işareti karakterinden kaçmak için kullanılabilir .


2
Sadece bir not, ancak tek tırnaktan kaçamazsınız gibi görünüyor Son örneğiniz geçerli değil. Belki de görevinizden bu yana bir şey değişti, çünkü ben de bu about_quotingyardımı bulamıyorum . Çalışan powershell v5.1. Çift tırnak işaretlerinden kaçmak veya farklı türde tırnak yuvaları hala beklendiği gibi çalışır.
Kal Zekdor

1
İlginç - tek tırnaktan kaçma desteğinin bir hata olduğu ortaya çıktı. About_quoting yardım dosyası, about_quoting_rules ile değiştirildi ve açıkça tek bir alıntı dizeleri değişmezler çünkü PowerShell v5'teki tek tırnaklardan kaçmak için bir geri vuruş kullanamayacağınızı söylüyor. İyi yakalama, bu V3'te farklıydı.
Helvick

1
Tekli tırnakların, SQL'de olduğu gibi, tek tırnaklı dizelerde ikiye katlanarak çıkarıldığına dikkat edin. Böylece , ikinci örneğinizle aynı şekilde 'As they say, ''live and learn.'''çıktılar As they say, 'live and learn.'.
brianary

13

Powershell'deki kaçış karakteri "` "(geriye doğru kesme / mezar).

Bu, tırnaklardan ve ayrıca özel karakterlerden kaçmak için kullanılabilir (örneğin, sekme `t'dir).


2
Bu muhtemelen bashkullanıcıları çılgına çevirir. ( cmd.exeKaçış karakteri ^)
Grawity

2
Eğer şüphe edersen, ters eğik çizgi gibi görünür.
koenigdmj

10

Burada daha önce verilenleri iltifat etmek için, ayrıca teklifin kendisiyle bir alıntıdan (tek veya çift) kaçabileceğinizi de bilmelisiniz. Bu, bunu yapabileceğiniz anlamına gelir:

"İşte bir" "çift alıntılı dize" "örneği.

ve bu:

'Bu sefer' 'tek alıntı' '.

Bu sözdiziminin sağladığı avantaj basittir: aynı alıntıyı iki kez yazmak, bir alıntıyı ters çevirmekten kaçmaktan daha kolaydır.


1

tek 'metin', bu yüzden değişmez metin olarak kabul edilir, sonra "\" kullanarak özel karakterlerden kaçın

örneğin: Bu dize: "Dedikleri gibi", yaşa ve öğren. "" Bu dize olur 'Dedikleri gibi, "yaşa ve öğren."


1
PowerShell'de değil. PS C: \ WINDOWS \ system32> Yazma-Ana Bilgisayar 'Söyledikleri gibi, \ "yaşa ve öğren. \"' Dedikleri gibi \ "yaşa ve öğren. \"
ÜmitsizN00b

1
@ ÜmitsizN00b belki de çok sert bir şekilde yargılamayalım - bu PowerShell.exe -Commandparametre parametresinde çift tırnak işareti kullanıyorsanız ve kullanıyorsanız işe yarar (teknik olarak, CMD'den kaçan, ancak komut parametresinde geçerlidir). imgur.com/1btjoQW
jparnell8839
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.