Comment vérifier si une valeur est incluse dans un tableau
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:
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:
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.