คำถามติดแท็ก bash-functions

1
ชื่อฟังก์ชันสคริปต์ Bash ที่มีเครื่องหมายโคลอนคู่ '::'
ฉันมาข้ามสคริปต์ทุบตีในวันนี้ว่ามีฟังก์ชั่นที่มีชื่อทวิภาคคู่::ในพวกเขาเช่นและfile::write() file::read()ฉันไม่เคยเห็นไวยากรณ์นี้มาก่อนในสคริปต์ Bash และเมื่อฉันเรียกใช้สคริปต์สคริปต์จะทำงานได้ดี (ทำให้ฉันประหลาดใจ) หลังจากกำจัด man page ของ Bash ในระบบของฉัน (และออนไลน์) ฉันไม่พบสิ่งใดในเอกสารที่สนับสนุนไวยากรณ์นี้สำหรับชื่อฟังก์ชัน ตัวอย่างเช่นส่วนShell Defined Functionsกำหนดไวยากรณ์สำหรับฟังก์ชั่นเปลือกที่จะ function name [()] compound-command [redirection] และจากนั้น (ที่อื่น ๆ ในคู่มือ) โทเค็นnameถูกกำหนดเป็น name A word consisting only of alphanumeric characters and underscores, and beginning with an alphabetic character or an underscore. Also referred to as an …

1
วิธีการป้องกันฟังก์ชั่นทุบตีถูกแทนที่?
ในbashเปลือกเราสามารถกำหนดฟังก์ชั่นfด้วย f(){ echo Hello; } จากนั้นทำการประกาศใหม่ / แทนที่โดยไม่มีข้อผิดพลาดหรือข้อความเตือนใด ๆ ด้วย f(){ echo Bye; } ฉันเชื่อว่ามีวิธีในการปกป้องฟังก์ชั่นจากการถูกแทนที่ด้วยวิธีนี้

3
ทำไม sh (ไม่ใช่ทุบตี) บ่นเกี่ยวกับฟังก์ชั่นที่กำหนดไว้ใน. bashrc ของฉัน
ฉันได้รับสิ่งนี้เมื่อฉันเปิดเซสชันเทอร์มินัล: sh: ข้อผิดพลาดการนำเข้าคำจำกัดความของฟังก์ชั่นสำหรับ `read.json ' sh: ข้อผิดพลาดการนำเข้าคำจำกัดความของฟังก์ชั่นสำหรับ `ts-project ' sh ไม่ชอบฟังก์ชั่นเหล่านี้เพราะมันดูเหมือน: read.json(){ :: } และ ts-project(){ :: } คำถามที่แท้จริงคือ - ทำไมการshสัมผัส / ตีความไฟล์เหล่านี้? ฉันใช้ MacOS และเห็นสิ่งนี้มาก่อนมันเป็นเรื่องลึกลับ ฉันคิดว่าทุบตีเท่านั้นที่จะโหลดไฟล์เหล่านี้ update : ทุบตีและ sh จะไม่มีอะไรผิดปกติ เมื่อฉันพิมพ์ bash ในเทอร์มินัลฉันได้รับสิ่งนี้: alex$ bash beginning to load .bashrc finished loading .bashrc bash-3.2$ เมื่อฉันพิมพ์shใน terminal ฉันได้รับสิ่งนี้: alex$ sh …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.