@@ -718,15 +718,17 @@ _comp_delimited()
718
718
# delimiter so we get space appended.
719
719
[[ ! $cur || $cur == * " $delimiter " ]] || unset " existing[${# existing[@]} -1]"
720
720
IFS=$ifs
721
- for x in ${existing+" ${existing[@]} " } ; do
722
- for i in " ${! COMPREPLY[@]} " ; do
723
- if [[ $x == " ${COMPREPLY[i]} " ]]; then
724
- unset " COMPREPLY[i]"
725
- continue 2 # assume no dupes in COMPREPLY
726
- fi
721
+ if (( ${# COMPREPLY[@]} )) ; then
722
+ for x in ${existing+" ${existing[@]} " } ; do
723
+ for i in " ${! COMPREPLY[@]} " ; do
724
+ if [[ $x == " ${COMPREPLY[i]} " ]]; then
725
+ unset " COMPREPLY[i]"
726
+ continue 2 # assume no dupes in COMPREPLY
727
+ fi
728
+ done
727
729
done
728
- done
729
- COMPREPLY=( $( compgen -W ' ${COMPREPLY[@]} ' -- " ${cur ##* $delimiter } " ) )
730
+ COMPREPLY=( $( compgen -W ' "${COMPREPLY[@]}" ' -- " ${cur ##* $delimiter } " ) )
731
+ fi
730
732
else
731
733
COMPREPLY=($( compgen " $@ " -- " ${cur##* $delimiter } " ) )
732
734
fi
@@ -760,16 +762,18 @@ _comp_variable_assignments()
760
762
TZ)
761
763
cur=/usr/share/zoneinfo/$cur
762
764
_filedir
763
- for i in " ${! COMPREPLY[@]} " ; do
764
- if [[ ${COMPREPLY[i]} == * .tab ]]; then
765
- unset ' COMPREPLY[i]'
766
- continue
767
- elif [[ -d ${COMPREPLY[i]} ]]; then
768
- COMPREPLY[i]+=/
769
- compopt -o nospace
770
- fi
771
- COMPREPLY[i]=${COMPREPLY[i]#/ usr/ share/ zoneinfo/ }
772
- done
765
+ if (( ${# COMPREPLY[@]} )) ; then
766
+ for i in " ${! COMPREPLY[@]} " ; do
767
+ if [[ ${COMPREPLY[i]} == * .tab ]]; then
768
+ unset ' COMPREPLY[i]'
769
+ continue
770
+ elif [[ -d ${COMPREPLY[i]} ]]; then
771
+ COMPREPLY[i]+=/
772
+ compopt -o nospace
773
+ fi
774
+ COMPREPLY[i]=${COMPREPLY[i]#/ usr/ share/ zoneinfo/ }
775
+ done
776
+ fi
773
777
;;
774
778
TERM)
775
779
_terms
@@ -1036,7 +1040,8 @@ _mac_addresses()
1036
1040
COMPREPLY+=($( command sed -ne \
1037
1041
" s/^[[:space:]]*\($re \)[[:space:]].*/\1/p" /etc/ethers 2> /dev/null) )
1038
1042
1039
- COMPREPLY=($( compgen -W ' ${COMPREPLY[@]}' -- " $cur " ) )
1043
+ (( ${# COMPREPLY[@]} )) &&
1044
+ COMPREPLY=($( compgen -W ' "${COMPREPLY[@]}"' -- " $cur " ) )
1040
1045
__ltrim_colon_completions " $cur "
1041
1046
}
1042
1047
@@ -1115,7 +1120,8 @@ _available_interfaces()
1115
1120
} 2> /dev/null | awk \
1116
1121
' /^[^ \t]/ { if ($1 ~ /^[0-9]+:/) { print $2 } else { print $1 } }' ) )
1117
1122
1118
- COMPREPLY=($( compgen -W ' ${COMPREPLY[@]/%[[:punct:]]/}' -- " $cur " ) )
1123
+ (( ${# COMPREPLY[@]} )) &&
1124
+ COMPREPLY=($( compgen -W ' "${COMPREPLY[@]/%[[:punct:]]/}"' -- " $cur " ) )
1119
1125
}
1120
1126
1121
1127
# Echo number of CPUs, falling back to 1 on failure.
@@ -1345,7 +1351,8 @@ _services()
1345
1351
COMPREPLY+=($( initctl list 2> /dev/null | cut -d' ' -f1) )
1346
1352
fi
1347
1353
1348
- COMPREPLY=($( compgen -W ' ${COMPREPLY[@]#${sysvdirs[0]}/}' -- " $cur " ) )
1354
+ (( ${# COMPREPLY[@]} )) &&
1355
+ COMPREPLY=($( compgen -W ' "${COMPREPLY[@]#${sysvdirs[0]}/}"' -- " $cur " ) )
1349
1356
}
1350
1357
1351
1358
# This completes on a list of all available service scripts for the
@@ -1424,7 +1431,8 @@ _usergroup()
1424
1431
local IFS=$' \n '
1425
1432
COMPREPLY=($( compgen -g -- " $mycur " ) )
1426
1433
fi
1427
- COMPREPLY=($( compgen -P " $prefix " -W " ${COMPREPLY[@]} " ) )
1434
+ (( ${# COMPREPLY[@]} )) &&
1435
+ COMPREPLY=($( compgen -P " $prefix " -W ' "${COMPREPLY[@]}"' ) )
1428
1436
elif [[ $cur == * :* ]]; then
1429
1437
# Completing group after 'user:gr<TAB>'.
1430
1438
# Reply with a list of unprefixed groups since readline with split on :
@@ -1844,7 +1852,8 @@ _known_hosts_real()
1844
1852
IFS=$ifs
1845
1853
done < " $i "
1846
1854
done
1847
- COMPREPLY=($( compgen -W ' ${COMPREPLY[@]}' -- " $cur " ) )
1855
+ (( ${# COMPREPLY[@]} )) &&
1856
+ COMPREPLY=($( compgen -W ' "${COMPREPLY[@]}"' -- " $cur " ) )
1848
1857
fi
1849
1858
if (( ${# khd[@]} > 0 )) ; then
1850
1859
# Needs to look for files called
@@ -1861,9 +1870,11 @@ _known_hosts_real()
1861
1870
fi
1862
1871
1863
1872
# apply suffix and prefix
1864
- for i in ${! COMPREPLY[*]} ; do
1865
- COMPREPLY[i]=$prefix ${COMPREPLY[i]} $suffix
1866
- done
1873
+ if (( ${# COMPREPLY[@]} )) ; then
1874
+ for i in ${! COMPREPLY[*]} ; do
1875
+ COMPREPLY[i]=$prefix ${COMPREPLY[i]} $suffix
1876
+ done
1877
+ fi
1867
1878
fi
1868
1879
1869
1880
# append any available aliases from ssh config files
@@ -1903,16 +1914,18 @@ _known_hosts_real()
1903
1914
IFS=$' \t\n '
1904
1915
$reset
1905
1916
1906
- if [[ -v ipv4 ]]; then
1907
- COMPREPLY=(" ${COMPREPLY[@]/*:* $suffix / } " )
1908
- fi
1909
- if [[ -v ipv6 ]]; then
1910
- COMPREPLY=(" ${COMPREPLY[@]/ +([0-9]).+([0-9]).+([0-9]).+([0-9])$suffix / } " )
1911
- fi
1912
- if [[ -v ipv4 || -v ipv6 ]]; then
1913
- for i in " ${! COMPREPLY[@]} " ; do
1914
- [[ ${COMPREPLY[i]} ]] || unset -v " COMPREPLY[i]"
1915
- done
1917
+ if (( ${# COMPREPLY[@]} )) ; then
1918
+ if [[ -v ipv4 ]]; then
1919
+ COMPREPLY=(" ${COMPREPLY[@]/*:* $suffix / } " )
1920
+ fi
1921
+ if [[ -v ipv6 ]]; then
1922
+ COMPREPLY=(" ${COMPREPLY[@]/ +([0-9]).+([0-9]).+([0-9]).+([0-9])$suffix / } " )
1923
+ fi
1924
+ if [[ -v ipv4 || -v ipv6 ]]; then
1925
+ for i in " ${! COMPREPLY[@]} " ; do
1926
+ [[ ${COMPREPLY[i]} ]] || unset -v " COMPREPLY[i]"
1927
+ done
1928
+ fi
1916
1929
fi
1917
1930
1918
1931
__ltrim_colon_completions " $prefix$cur "
0 commit comments