#!/bin/bash # exemple d'append en bash while read AA[${#AA[@]}]; do :; done<keywords.txt
ou plus simplement depuis bash 4
#!/bin/bash4 # exemple de lecture de fichier dans un tableau mapfile AA < keywords.txt
#!/bin/bash4 # exemple d'append en bash declare -A AA declare -a Index while read Index[${#Index[@]}]; do :; done<keywords.txt for I in "${Index[@]}" do AA[$I]="test $I" done
#!/bin/bash # clés nommées de tableaux associatifs #Usage is_key_of key associative_array is_key_of() { eval "declare -a a=("\${!$2[@]"})" && (for k in ${a[@]};do [ "$k" == "$1" ]&&return 0;done;return 1)||return 1 }
L'appel se fera de la manière suivante :
declare -A AA=([foonuts]=bar [bazfoo]=quux [bozo]=ysps) is_key_of bozo AA && echo yea || echo bahh is_key_of bozobo AA && echo yea || echo bahh
Information : les entrées
set | grep ^TABLE=
ne sont la que pour les besoins de la démonstration et ne servent qu'à lʼaffichage.
#!/bin/bash # eléments de tableaux is_in(){ eval "tbl=\${$2[@]}"&&(for t in ${tbl[@]};do [ st0"$1" == "$t" ]&&return 0;done;return 1)||return 1 } set_in(){ eval "tbl=\${$2[@]}" && (for s in ${1//|/ };do(for t in ${tbl[@]};do [ "$s" == "$t" ]&&exit 0;done;exit 1)||exit 1;done) }
L'appel se fera de la manière suivante :
TABLE=("moi" "j'aime" "pas" "les" "tableaux" "en" "bash") set | grep ^TABLE= is_in "j'aime" TABLE echo "\"j'aime\" est-il dans TABLE ? => " $?
Et le résultat :
TABLE=([0]="moi" [1]="j'aime" [2]="pas" [3]="les" [4]="tableaux" [5]="en" [6]="bash") "j'aime" est-il dans TABLE ? => 0
#!/bin/bash # éléments de tableaux array_ror(){ // on aurait aussi pu faire : $1=(${$1[${#$1[@]}-1]} ${$1[@]}) ; unset $1[${#$1[@]}-1] $1=(${$1[${#$1[@]}-1]} ${$1[@]::${#$1[@]}-1}) } array_rol(){ $1=(${$1[@]:1} ${$1[0]}) }
L'appel se fera de la manière suivante :
TABLE=("moi" "j'aime" "pas" "les" "tableaux" "en" "bash") set | grep ^TABLE= array_rol TABLE set | grep ^TABLE= array_ror TABLE set | grep ^TABLE=
Et le résultat :
TABLE=([0]="moi" [1]="j'aime" [2]="pas" [3]="les" [4]="tableaux" [5]="en" [6]="bash") TABLE=([0]="j'aime" [1]="pas" [2]="les" [3]="tableaux" [4]="en" [5]="bash" [6]="moi") TABLE=([0]="moi" [1]="j'aime" [2]="pas" [3]="les" [4]="tableaux" [5]="en" [6]="bash")
Comme on peut le remarquer, les indices ont bien été altérés pour refléter le nouveau tableau.
Fichier : wiki › bash › exemples - dernière modification le 05/10/2016 à 04:05 par Trollab