จะหลีกเลี่ยงอักขระพิเศษในตัวแปรใน 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` เป็นต้น ฉันหวังว่านี่จะช่วยได้


