about_Quoting_Rules
Deskripsi singkat
Menjelaskan aturan untuk menggunakan tanda kutip tunggal dan ganda di PowerShell.
Deskripsi panjang
Tanda kutip digunakan untuk menentukan string harfiah. Anda dapat mengapit string dalam tanda kutip tunggal ('
) atau tanda kutip ganda ("
).
Tanda kutip juga digunakan untuk membuat string di sini. String di sini adalah string yang dikutip tunggal atau dikutip ganda di mana tanda kutip ditafsirkan secara harfiah. String di sini dapat mencakup beberapa baris. Semua baris dalam string di sini ditafsirkan sebagai string, meskipun tidak diapit dalam tanda kutip.
Dalam perintah ke komputer jarak jauh, tanda kutip menentukan bagian perintah yang dijalankan pada komputer jarak jauh. Dalam sesi jarak jauh, tanda kutip juga menentukan apakah variabel dalam perintah ditafsirkan terlebih dahulu di komputer lokal atau di komputer jarak jauh.
String yang dikutip ganda
String yang diapit dalam tanda kutip ganda adalah string yang dapat diperluas. Nama variabel yang didahului oleh tanda dolar ($
) diganti dengan nilai variabel sebelum string diteruskan ke perintah untuk diproses.
Contohnya:
$i = 5
"The value of $i is $i."
Output dari perintah ini adalah:
The value of 5 is 5.
Selain itu, dalam string yang dikutip ganda, ekspresi dievaluasi, dan hasilnya disisipkan dalam string. Contohnya:
"The value of $(2+3) is 5."
Output dari perintah ini adalah:
The value of 5 is 5.
Hanya referensi variabel dasar yang dapat langsung disematkan dalam string yang dapat diperluas. Referensi variabel menggunakan pengindeksan array atau akses anggota harus diapit dalam subekspresi. Contohnya:
"PS version: $($PSVersionTable.PSVersion)"
PS version: 7.2.0
Untuk memisahkan nama variabel dari karakter berikutnya dalam string, sertakan dalam kurung kurawal ({}
). Ini sangat penting jika nama variabel diikuti oleh titik dua (:
). PowerShell mempertimbangkan segala sesuatu antara dan $
penentu :
cakupan, biasanya menyebabkan interpretasi gagal. Misalnya, "$HOME: where the heart is."
melemparkan kesalahan, tetapi "${HOME}: where the heart is."
berfungsi seperti yang dimaksudkan.
Untuk mencegah penggantian nilai variabel dalam string yang dikutip ganda, gunakan karakter backtick (`
), yang merupakan karakter escape PowerShell.
Dalam contoh berikut, karakter backtick yang mendahului variabel pertama $i
mencegah PowerShell mengganti nama variabel dengan nilainya.
Contohnya:
$i = 5
"The value of `$i is $i."
Output dari perintah ini adalah:
The value of $i is 5.
String yang dikutip tunggal
String yang diapit dalam tanda kutip tunggal adalah string verbatim . String diteruskan ke perintah persis saat Anda mengetiknya. Tidak ada penggantian yang dilakukan. Contohnya:
$i = 5
'The value of $i is $i.'
Output dari perintah ini adalah:
The value $i is $i.
Demikian pula, ekspresi dalam string yang dikutip tunggal tidak dievaluasi. Mereka ditafsirkan sebagai literal string. Contohnya:
'The value of $(2+3) is 5.'
Output dari perintah ini adalah:
The value of $(2+3) is 5.
Menyertakan karakter kutipan dalam string
Untuk membuat tanda kutip ganda muncul dalam string, sertakan seluruh string dalam tanda kutip tunggal. Contohnya:
'As they say, "live and learn."'
Output dari perintah ini adalah:
As they say, "live and learn."
Anda juga dapat mengapit string yang dikutip tunggal dalam string yang dikutip ganda. Contohnya:
"As they say, 'live and learn.'"
Output dari perintah ini adalah:
As they say, 'live and learn.'
Atau, gandakan tanda kutip di sekitar frasa yang dikutip ganda. Contohnya:
"As they say, ""live and learn."""
Output dari perintah ini adalah:
As they say, "live and learn."
Untuk menyertakan tanda kutip tunggal dalam string yang dikutip tunggal, gunakan tanda kutip tunggal berturut-turut kedua. Contohnya:
'don''t'
Output dari perintah ini adalah:
don't
Untuk memaksa PowerShell menginterpretasikan tanda kutip ganda secara harfiah, gunakan karakter backtick. Ini mencegah PowerShell menginterpretasikan tanda kutip sebagai pemisah string. Contohnya:
"Use a quotation mark (`") to begin a string."
'Use a quotation mark (`") to begin a string.'
Karena konten string yang dikutip tunggal ditafsirkan secara harfiah, karakter backtick diperlakukan sebagai karakter harfiah dan ditampilkan dalam output.
Use a quotation mark (") to begin a string.
Use a quotation mark (`") to begin a string.
Berikut string
Aturan kutipan untuk here-string sedikit berbeda.
String di sini adalah string yang dikutip tunggal atau dikutip ganda yang dikelilingi oleh tanda (@
). Tanda kutip dalam string di sini ditafsirkan secara harfiah.
String di sini:
- rentang beberapa baris
- dimulai dengan tanda pembuka diikuti oleh baris baru
- diakhir dengan baris baru diikuti dengan tanda penutup
- mencakup setiap baris antara tanda pembuka dan penutupan sebagai bagian dari satu string
Seperti string reguler, variabel digantikan oleh nilainya dalam string di sini yang dikutip ganda. Dalam string di sini yang dikutip tunggal, variabel tidak digantikan oleh nilainya.
Anda dapat menggunakan string di sini untuk teks apa pun, tetapi sangat berguna untuk jenis teks berikut:
- Teks yang berisi tanda kutip harfiah
- Beberapa baris teks, seperti teks dalam blok HTML atau XML
- Teks Bantuan untuk skrip atau dokumen fungsi
String di sini dapat memiliki salah satu format berikut, di mana <Enter>
mewakili karakter tersembunyi baris atau baris baru yang ditambahkan saat Anda menekan tombol ENTER .
Tanda kutip ganda:
@"<Enter>
<string> [string] ...<Enter>
"@
Tanda kutip tunggal:
@'<Enter>
<string> [string] ...<Enter>
'@
Catatan
Karakter baris baru akhir adalah bagian dari tanda penutup. Ini tidak ditambahkan ke string di sini.
String di sini berisi semua teks antara tanda pembuka dan penutup. Dalam string di sini, semua tanda kutip ditafsirkan secara harfiah. Contohnya:
@"
For help, type "get-help"
"@
Output dari perintah ini adalah:
For help, type "get-help"
Menggunakan here-string dapat menyederhanakan menggunakan string dalam perintah. Contohnya:
@"
Use a quotation mark, like ' or ", to begin a string.
"@
Output dari perintah ini adalah:
Use a quotation mark, like ' or ", to begin a string.
Dalam string di sini yang dikutip tunggal, variabel ditafsirkan secara harfiah dan direproduksi dengan tepat. Contohnya:
@'
The $profile variable contains the path
of your PowerShell profile.
'@
Output dari perintah ini adalah:
The $profile variable contains the path
of your PowerShell profile.
Dalam string di sini yang dikutip ganda, variabel digantikan oleh nilainya. Contohnya:
@"
Even if you have not created a profile,
the path of the profile file is:
$profile.
"@
Output dari perintah ini adalah:
Even if you have not created a profile,
the path of the profile file is:
C:\Users\User1\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.
String berikut biasanya digunakan untuk menetapkan beberapa baris ke variabel. Misalnya, string berikut menetapkan halaman XML ke variabel $page.
$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>
"@
String di sini juga merupakan format yang nyaman untuk input ke ConvertFrom-StringData
cmdlet, yang mengonversi di sini-string menjadi tabel hash.
Untuk informasi selengkapnya, lihat ConvertFrom-StringData
.
Catatan
PowerShell memungkinkan string yang dikutip ganda atau tunggal untuk menjangkau beberapa baris tanpa menggunakan @
sintaksis string di sini. Namun, sintaksis full here-string adalah penggunaan yang disukai.
Interpretasi string yang dapat diperluas
String yang diperluas tidak selalu terlihat sama dengan output default yang Anda lihat di konsol.
Koleksi, termasuk array, dikonversi ke string dengan menempatkan spasi tunggal di antara representasi string elemen. Pemisah yang berbeda dapat ditentukan dengan mengatur variabel $OFS
preferensi . Untuk informasi selengkapnya, lihat $OFS
variabel preferensi.
Instans dari jenis lain dikonversi menjadi string dengan memanggil ToString()
metode , yang mungkin tidak memberikan representasi yang bermakna. Contohnya:
"hashtable: $(@{ key = 'value' })"
hashtable: System.Collections.Hashtable
Untuk mendapatkan output yang sama seperti di konsol, gunakan subekspresi tempat Anda menyalurkan ke Out-String
. Terapkan Trim()
metode jika Anda ingin menghapus baris kosong di awal dan belakang.
"hashtable:`n$((@{ key = 'value' } | Out-String).Trim())"
hashtable:
Name Value
---- -----
key value
Pengaturan budaya memengaruhi interpretasi string
Metode ini ToString()
menggunakan pengaturan budaya yang dikonfigurasi saat ini untuk mengonversi nilai menjadi string. Misalnya, budaya sesi PowerShell berikut diatur ke de-DE
. ToString()
Ketika metode mengonversi nilai $x
menjadi string, metode menggunakan koma (,
) untuk pemisah desimal. Selain itu, metode mengonversi ToString()
tanggal menjadi string menggunakan format yang sesuai untuk pengaturan lokal Jerman.
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
Namun, PowerShell menggunakan budaya invarian saat menafsirkan ekspresi string yang dapat diperluas.
PS? "$x"
1.2
PS> "$(Get-Date 2024-03-19)"
03/19/2024 00:00:00
Meneruskan string yang dikutip ke perintah eksternal
Beberapa perintah asli mengharapkan argumen yang berisi karakter kutipan. PowerShell menginterpretasikan string yang dikutip sebelum meneruskannya ke perintah eksternal. Interpretasi ini menghapus karakter kutipan luar.
Untuk informasi selengkapnya tentang perilaku ini, lihat artikel about_Parsing .