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

2
ความสับสนเกี่ยวกับ $ {array [*]} เทียบกับ $ {array [@]} ในบริบทของการทำ bash
ฉันรู้สึกสับสนในการเขียน bash เสร็จเป็นครั้งแรกและฉันสับสนเล็กน้อยเกี่ยวกับสองวิธีในการยกเลิกการอ้างอิงอาร์เรย์แบช (${array[@]}และ${array[*]}) นี่คือส่วนของรหัสที่เกี่ยวข้อง (มันใช้งานได้ แต่ฉันอยากจะเข้าใจให้ดีขึ้น): _switch() { local cur perls local ROOT=${PERLBREW_ROOT:-$HOME/perl5/perlbrew} COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} perls=($ROOT/perls/perl-*) # remove all but the final part of the name perls=(${perls[*]##*/}) COMPREPLY=( $( compgen -W "${perls[*]} /usr/bin/perl" -- ${cur} ) ) } เอกสารของ bash กล่าวว่า : องค์ประกอบใด ๆ ของอาร์เรย์สามารถอ้างอิงได้โดยใช้ $ {name [subscript]} ต้องใช้วงเล็บปีกกาเพื่อหลีกเลี่ยงความขัดแย้งกับตัวดำเนินการขยายชื่อไฟล์ของเชลล์ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.