Score:0

การชนกันของฟังก์ชัน Bash / ชื่อนามแฝงทำให้เกิดข้อผิดพลาด seg

ธง me

ปัญหาในโพสต์นี้ก็เกิดขึ้นกับฉันเช่นกัน mkdir ขัดข้องทุบตี

ฉันไม่สามารถแสดงความคิดเห็นที่นั่นได้เพราะไม่มีชื่อเสียง ทุกคนสามารถอธิบายว่าทำไมสิ่งนี้ถึงเกิดขึ้น? มันเกิดขึ้นที่รันไทม์ ไม่ใช่เมื่อโหลดฟังก์ชัน นี่คือการวางของปัญหาที่เหมือนกัน

เอ็มดี() 
{  
    [ $# -eq 0 ] && { echo "$0 dirname [สิทธิ์]"; กลับ; }
    [ -d "$1" ] && { echo "%1 มีอยู่แล้ว!"; กลับ; }
    mkdir -m ${2:-0755} -p "$1"
}

"ปัญหาคือก่อนหน้านี้ฉันเคยมีนามแฝงเช่น alias md="mkdir" ดังนั้นเมื่อ bash แยกวิเคราะห์ฟังก์ชัน bash ใหม่ มันจะขยาย md() เป็น mkdir() และฟังก์ชันดังกล่าวก็วนซ้ำไม่สิ้นสุดและทำให้เชลล์ขัดข้อง "

ฉันรู้สึกว่าพบปัญหานี้อย่างเหมาะสม แต่ฉันไม่เข้าใจเหตุผล ฉันไม่เข้าใจเหตุผลที่เป็นไปได้ที่การขยายนามแฝงทำให้ฟังก์ชันเชลล์ที่มีคุณสมบัติครบถ้วนไม่ถูกต้อง ถอยหลังดีไหม?

ขออภัยสำหรับการหลอกลวง โปรดอ่านเหตุผลก่อนการเรียก

hr flag
นามแฝงเป็นเพียงมาโครแทนที่ข้อความ ดังนั้นเมื่อคุณพยายาม *กำหนด* `md() { ... }` หลังจากกำหนด `md=mkdir` คุณจะลงเอยด้วย `mkdir() { ... }` ลองพิมพ์ฟังก์ชัน defs ด้วย `declare -p -f md` และ `declare -p -f mkdir` เพื่อดูว่าฉันหมายถึงอะไร
Score:0
ธง me

"นามแฝงเป็นเพียงมาโครการแทนที่ข้อความ - ดังนั้นเมื่อคุณพยายามกำหนด เอ็มดี () { ... } หลังจากกำหนด md=mkdir คุณลงเอยด้วย mkdir() { ... }. ลองพิมพ์ฟังก์ชั่น defs ด้วย ประกาศ -p -f md และ ประกาศ -p -f mkdir เพื่อดูว่าฉันหมายถึงอะไร" â นักขับเหล็ก

zi@zi-top:~$ ประกาศ -p -f nd
ทุบตี: ประกาศ: nd: ไม่พบ
zi@zi-top:~$ ประกาศ -p -f mkdir
มคดีร์ () 
{ 
    mkdir -p "$@"
}
zi@zi-top:~$ และ () {
        mkdir -p "$@"
}
zi@zi-top:~$ ประกาศ -p -f nd
ทุบตี: ประกาศ: nd: ไม่พบ

ฉันเห็นว่าสิ่งที่คนขับเหล็กพูดเป็นความจริง ฉันคิดว่ามันเป็นการตัดสินใจทางสถาปัตยกรรมที่แปลกโดยมีเหตุผลบางอย่างในโค้ดคือข้อความทุบตี ขอบคุณ!

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา