3
ทำไมไม่ `|` ได้รับการปฏิบัติอย่างแท้จริงในรูปแบบกลม?
คำถามของฉันมาจากการจัดเก็บการแสดงออกปกติในตัวแปรเปลือกหลีกเลี่ยงปัญหาเกี่ยวกับการอ้างอิงตัวอักษรที่พิเศษให้กับเชลล์ได้อย่างไร . ทำไมมีข้อผิดพลาด: $ [[ $a = a|b ]] bash: syntax error in conditional expression: unexpected token `|' bash: syntax error near `|b' ภายใน[[ ... ]]ตัวถูกดำเนินการตัวที่สองของ=คาดว่าจะเป็นรูปแบบกลม คือa|bไม่ใช่รูปแบบ globbing ที่ถูกต้อง? คุณช่วยชี้ให้เห็นว่ามันละเมิดกฎไวยากรณ์หรือไม่ ความคิดเห็นบางส่วนด้านล่างชี้ให้เห็นว่า|ถูกตีความว่าเป็นไปป์ แล้วเปลี่ยน=สำหรับรูปแบบ glob ไป=~สำหรับ regex รูปแบบทำให้ |การทำงาน $ [[ $a =~ a|b ]] ฉันเรียนรู้จากLearning Bash p180 ในโพสต์ก่อนหน้าของฉันซึ่ง|เป็นที่รู้จักในฐานะจุดเริ่มต้นของการตีความแม้กระทั่งก่อนการตีความขั้นตอนอื่น ๆ (รวมถึงการแยกวิเคราะห์การแสดงออกตามเงื่อนไขในตัวอย่าง) ดังนั้น …
13
bash