ฉันต้องการสร้างกฎความสมบูรณ์สำหรับรายการพารามิเตอร์ที่คั่นด้วยเครื่องหมายจุลภาค เช่นฉันมีคำสั่งที่ได้รับรายชื่อเซิร์ฟเวอร์:
myscript -s name1,name2,name3ในขณะนี้ฉันได้จัดการเขียนเสร็จสมบูรณ์ดังต่อไปนี้:
_myscript () {
  local cur prev opts
  _get_comp_words_by_ref cur prev
  opts='-s'
  servers='name1 name2 name3'
  if [[ ${cur} == -* ]] ; then
    COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
  else
    case "${prev}" in
      -s)
        if [[ "$cur" == *,* ]]; then
          local realcur prefix
          realcur=${cur##*,}
          prefix=${cur%,*}
          COMPREPLY=( $(compgen -W "${servers}" -P "${prefix}," -- ${realcur}) )
        else
          COMPREPLY=( $(compgen -W "${servers}" -- ${cur}) )
        fi
        ;;
      *)
        # do nothing
        ;;
    esac
  fi
}แต่มันมีปัญหาอย่างน้อย 2 ข้อ:
- คำแนะนำสำหรับค่าปัจจุบันรวมถึงค่าก่อนหน้าทั้งหมดในคำนำหน้าของพวกเขา
- ไม่ถือว่าค่าที่ซ้ำกัน
แนวปฏิบัติที่ดีที่สุดสำหรับกรณีดังกล่าวคืออะไร? บางที bash-completions มีฟังก์ชั่นบางอย่างที่รวมมาสำหรับ csv-list?
$VARIABLEมิฉะนั้นการแตกคำจะไม่เกิดขึ้น IFS=, LIST=($VARIABLE)เพียงแค่ใช้
                
IFS=, LIST=("$VARIABLE")โดยที่ $ VARIABLE มีค่าที่คั่นด้วยเครื่องหมายจุลภาคของคุณ