ค้นหาเว็บไซต์

จะหลีกเลี่ยงอักขระพิเศษในตัวแปรใน PowerShell ได้อย่างไร


เมื่อเร็ว ๆ นี้หนึ่งในโปรเจ็กต์ของฉัน สมาชิกในทีมพยายามหลีกเลี่ยงอักขระพิเศษในตัวแปร PowerShell ฉันแนะนำวิธีการบางอย่าง ในบทช่วยสอนนี้ ฉันจะแสดงวิธีหลีกเลี่ยงอักขระพิเศษในตัวแปรใน PowerShell พร้อมตัวอย่าง

หากต้องการหลีกอักขระพิเศษในตัวแปร PowerShell ให้ใช้เครื่องหมายย้อนกลับ (`) เป็นอักขระหลีก ตัวอย่างเช่น หากต้องการรวมเครื่องหมายคำพูดคู่ภายในสตริง คุณสามารถเขียน: $example="He says, “Hello, World!"" ซึ่งจะเป็นการบอกให้ PowerShell ปฏิบัติต่อ เครื่องหมายคำพูดคู่เป็นอักขระตามตัวอักษร เพื่อให้มั่นใจว่าสคริปต์ของคุณทำงานได้อย่างราบรื่นโดยไม่ตีความอักขระพิเศษผิด

Escape อักขระพิเศษในตัวแปรใน PowerShell

อักขระพิเศษใน PowerShell มีสัญลักษณ์เช่น <, >, &, |, ^ และอื่นๆ อีกมากมาย อักขระเหล่านี้มีความหมายเฉพาะในภาษา PowerShell และสามารถเปลี่ยนแปลงวิธีการทำงานของสคริปต์ของคุณได้ เพื่อให้แน่ใจว่าสคริปต์ของคุณทำงานได้อย่างราบรื่น การหลีกเลี่ยงอักขระเหล่านี้เมื่อปรากฏในสตริงหรือตัวแปรถือเป็นสิ่งสำคัญ

PowerShell ใช้ backtick (`) เป็นอักขระหลีก อักขระนี้จะบอก PowerShell ให้ถือว่าอักขระต่อไปนี้เป็นตัวอักษรแทนที่จะเป็นอักขระพิเศษ

ตอนนี้ให้ฉันแสดงตัวอย่างบางส่วนให้คุณดู

ไวยากรณ์พื้นฐานสำหรับการหลีกอักขระพิเศษใน PowerShell คือ:

`<special_character>

หนีคำคมคู่

เครื่องหมายคำพูดคู่มักใช้ในสตริง และการยกเว้นอาจถือเป็นสิ่งสำคัญเมื่อปรากฏภายในสตริง

$example = "He said, `"Hello, World!`""
Write-Output $example

ในตัวอย่างนี้ เครื่องหมายคำพูดคู่รอบ Hello, World! จะถูกหลีกโดยใช้ backtick

นี่คือผลลัพธ์ที่แน่นอนที่คุณสามารถดูได้ในภาพหน้าจอด้านล่าง:

หลบหนีสัญญาณดอลลาร์

เครื่องหมายดอลลาร์ ($) ใช้เพื่อแสดงถึงตัวแปรใน PowerShell หากคุณต้องการรวมเครื่องหมายดอลลาร์ในสตริงโดยที่ไม่ถูกตีความว่าเป็นตัวแปร คุณต้อง Escape

$price = "The total is `$100"
Write-Output $price

ในกรณีนี้ เครื่องหมายดอลลาร์จะถูกยกเว้นเพื่อให้แน่ใจว่าได้รับการปฏิบัติเหมือนเป็นตัวอักษร

คุณสามารถดูผลลัพธ์ที่แน่นอนได้ในภาพหน้าจอด้านล่าง:

หนี Backticks

เนื่องจาก backtick นั้นเป็นอักขระหลีก การหลบหนีจึงต้องเพิ่มเป็นสองเท่า

$example = "This is a backtick: ``"
Write-Output $example

ตรวจสอบวิธีการตรวจสอบว่ามีตัวแปรอยู่ใน PowerShell หรือไม่

การใช้เครื่องหมายคำพูดเดี่ยว

อีกวิธีในการจัดการอักขระพิเศษคือการใช้เครื่องหมายคำพูดเดี่ยว (') สตริงที่อยู่ในเครื่องหมายคำพูดเดี่ยวจะถือเป็นสตริงตามตัวอักษร ซึ่งหมายความว่าจะไม่มีการแปลอักขระพิเศษ

$example = 'This is a string with special characters like $ and " without escaping.'
Write-Output $example

นี่คือผลลัพธ์ในภาพหน้าจอด้านล่าง:

ตัวดำเนินการ -replace

คุณอาจต้องแทนที่อักขระพิเศษภายในสตริงสำหรับสถานการณ์ที่ซับซ้อนมากขึ้น ตัวดำเนินการ -replace ของ PowerShell มีประโยชน์ที่นี่

$example = "Escape < and > in this string"
$escapedExample = $example -replace "<", "`<" -replace ">", "`>"
Write-Output $escapedExample

ในตัวอย่างนี้ ทั้ง < และ > จะถูกแทนที่ด้วยเวอร์ชันที่ใช้ Escape

การใช้ \ สำหรับคำสั่งดั้งเดิม

เมื่อทำงานกับคำสั่งเนทิฟที่ต้องมีการ Escape มักใช้แบ็กสแลช (\) สิ่งนี้มีความเกี่ยวข้องอย่างยิ่งเมื่อส่งข้อโต้แย้งไปยังโปรแกรมภายนอก

$command = 'C:\Program Files\Example\example.exe'
$escapedCommand = $command -replace " ", "\ "
Write-Output $escapedCommand

บทสรุป

ในบทช่วยสอนนี้ ฉันได้อธิบายวิธีหลีกเลี่ยงอักขระพิเศษใน PowerShell โดยใช้วิธีต่างๆ เช่น การใช้ backtick () เครื่องหมายคำพูดเดี่ยว และตัวดำเนินการ -replace` เป็นต้น ฉันหวังว่านี่จะช่วยได้

บทความที่เกี่ยวข้อง