คำถามติดแท็ก indirection

5
การขยายตัวทางอ้อมคืออะไร? $ {! var *} หมายความว่าอย่างไร
ฉันกำลังอ่าน " Bash Guide for Beginners " มันบอกว่า: ถ้าอักขระตัวแรกของPARAMETERเป็นเครื่องหมายอัศเจรีย์ Bash จะใช้ค่าของตัวแปรที่สร้างขึ้นจากส่วนที่เหลือPARAMETERเป็นชื่อของตัวแปร จากนั้นตัวแปรนี้จะถูกขยายและค่านั้นจะถูกใช้ในส่วนที่เหลือของการทดแทนแทนที่จะเป็นค่าของPARAMETERตัวมันเอง สิ่งนี้เรียกว่าการขยายตัวทางอ้อม ตัวอย่างที่ให้คือ: franky ~> echo ${!N*} NNTPPORT NNTPSERVER NPX_PLUGIN_PATH ฉันไม่ค่อยเข้าใจที่นี่: ค่าของตัวแปรที่เกิดจากส่วนที่เหลือของ PARAMETER ตามที่PARAMETERเป็นธรรม!N*แล้ว ส่วนที่เหลือของ PARAMETER N*เป็นเพียง สิ่งนี้สร้างตัวแปรได้อย่างไร? Bash ค้นหาคำสั่งที่เป็นไปได้ทั้งหมดหรือไม่?
87 bash  indirection 

2
ค่าสเกลาร์ได้รับผลกระทบหลังจากกดหรือไม่… (Raku)
ฉันมีปัญหาในการทำความเข้าใจว่าเมื่อใดและเพราะเหตุใดค่าที่จัดขึ้นโดยScalarคอนเทนเนอร์ที่ถูกพุชได้รับผลกระทบหลังจากการพุช ฉันจะพยายามอธิบายปัญหาที่ฉันพบในบริบทที่ซับซ้อนมากขึ้นในตัวอย่างสองตัวอย่าง * * * * * * * * ตัวอย่างที่ 1ในตัวอย่างแรกเป็นสเกลา$iถูกผลักลงบนอาร์เรย์เป็นส่วนหนึ่งของ@b Listหลังจากการพุชค่าที่เก็บโดยสเกลาร์จะได้รับการอัพเดตอย่างชัดเจนในการวนซ้ำในภายหลังของ for for loop โดยใช้$i++คำสั่ง การปรับปรุงเหล่านี้มีผลกระทบต่อค่าในอาร์เรย์@b: ในตอนท้ายของสำหรับวงที่@b[0;0]มีค่าเท่ากับและไม่มีอีกต่อไปเพื่อ32 my @b; my $i=0; for 1..3 -> $x { $i++; say 'Loose var $i: ', $i.VAR.WHICH, " ", $i.VAR.WHERE; if $x == 2 { @b.push(($i,1)); say 'Pushed $i : ', @b[0;0].VAR.WHICH, …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.