Bonjour, une autre proposition pour la FAQ :

Pour les versions de bash inférieures à la version 4 (/bin/bash --version), les tableaux sont relativement difficilement manipulables.

Si l'on souhaite savoir si une valeur (needle) est incluse dans un tableau (array), voila une solution avec un parcours des valeurs du tableau (plus fiable qu'un grep):

Une solution simple en bash :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
#!/bin/bash
function in_array() {
  local x
  local needle=$1
  shift 1
  local ARRAY=( "$@" )
 
  [ -z "${ARRAY}" ] && return 1
  [ -z "${needle}" ] && return 1
  for x in ${ARRAY[@]}; do
    [ "${x}" == "${needle}" ] && return 0
  done
  return 1
}
Exemple d'utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
tmp_arr=( "1" "11" "12" "13" )
 
for needle in $(seq 0 14)
## alternative bourne: for needle in {1..14}
do
   in_array "${needle}" "${tmp_arr[@]}"
   RET=$?
   [ "${RET}" -eq 0 ] && echo "ok : $needle est dans le tableau" || echo "Nok  $needle pas trouvé dans le tableau"
done
Nota: à adapter en bourne shell.