#/usr/bin/env bash _applyTemplate_completions () { declare -a options OPTIONS=("-help" "-timestamp") COMPREPLY=() local CUR OPTIONS_COUNT=0 CUR=${COMP_WORDS[COMP_CWORD]} # compte les options déjà utilisé et les retire de la liste des possible for ITEM in ${COMP_WORDS[@]:1} do if [[ " ${OPTIONS[*]} " =~ " ${ITEM} " ]] ; then let "OPTIONS_COUNT++" OPTIONS=(${OPTIONS[@]/${ITEM}}) else break fi done # si la position est dans des options "ou juste après" ((COMP_CWORD <= OPTIONS_COUNT+1)) && [[ "${CUR}" =~ ^- ]] && COMPREPLY=( $(compgen -W "${OPTIONS[*]}" -- "${CUR}" ) ) && return 0 # si la position est après des options ou que l'on ne commence pas par "-" on cherche des fichiers ((COMP_CWORD <= OPTIONS_COUNT+2)) && COMPREPLY=($(compgen -f -- "${CUR}")) && return 0 return 0 } complete -F _applyTemplate_completions applyTemplate.sh