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 :
Exemple d'utilisation :
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 }
Nota: à adapter en bourne shell.
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
Partager