ฉันเขียนสคริปต์เล็ก ๆ วันนี้ซึ่งมี
grep -q ^local0 /etc/syslog.conf
ในระหว่างการตรวจสอบผู้ร่วมงานแนะนำ^local0
ให้เสนอราคาเพราะ^
หมายถึง "ท่อ" ในเชลล์เป้าหมาย ฉันได้พยายามติดตามข้อมูลอ้างอิงที่กล่าวถึงสิ่งนี้ ไม่พบสิ่งใดบนอินเทอร์เน็ตที่แนะนำว่านี่เป็นปัญหา
อย่างไรก็ตามปรากฎว่าการใช้งานbsh
(ซึ่งอ้างว่าเป็นเชลล์เป้าหมาย) บน AIX 7 มีลักษณะการทำงานนี้:
> bsh
$ ls ^ wc
23 23 183
$ ls | wc
23 23 183
ไม่มีการใช้งาน "บอร์นเชลล์" อื่นใดที่ฉันพยายามทำในลักษณะนี้ (นั่น^
คือไม่ถือว่าเป็นเชลล์เมตาอักขระเลย) ฉันลองใช้sh
CentOS (ซึ่งทุบตีจริงๆ) และsh
FreeBSD (ซึ่งไม่ใช่ทุบตี) ฉันไม่มีระบบอื่น ๆ ให้ลอง
พฤติกรรมนี้คาดหวังหรือไม่? เชลล์ตัวไหนที่คิดว่า^
เป็นตัวชี้ตำแหน่งท่อ?
[ x"$foo" = x"bar" ]
ทำงานในปัจจุบันรหัสเปลือกเช่น
bsh
ไม่ใช่ Bourne Shell ชื่อนี้ถูกใช้สำหรับ Bourne Shell บน AIX เท่านั้น bsh
ค่อนข้างเป็นเปลือกที่ฉันแนะนำในปี 1984 ที่ H.Berhold AG บน UNOS (UNIX clone แรก) โปรดทราบว่า AIX ไม่มีอยู่จริงในปี 1984
^
มันเป็นตัวละครปฏิเสธใน zsh และในพื้นที่ regex ในฐานะที่เป็นความคิดเห็นที่แยกต่างหากโดยทั่วไปแล้วควรใช้เครื่องหมายคำพูดเดี่ยวในนิพจน์ grep เพื่อความสะดวกในการพกพาข้ามเชลล์