TrollabWikibashexemples

Lecture d'un fichier dans un tableau

#!/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

Ajout d'éléments à un tableau associatif en lisant les index depuis un fichier

#!/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

Clés nommées de tableaux associatifs

#!/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

Détection d'éléments dans un tableau

Recherche d'élément(s) dans un tableau

#!/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 :

Recherche d'élément(s) dans un tableau

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

Rotation des éléments dʼun tableau

Rotation des éléments dʼun tableau

#!/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 :

Rotation des éléments dʼun tableau

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


trollab.org, Since .... a long time ago, in a galaxy far, far away ...