Comment append un élément à un tableau dans un pipeline?

Ce script doit simplement append une valeur à un tableau à travers une boucle, puis afficher tous les éléments d'un tableau.

#!/bin/bash data_file="$1" down=() counter=0 cat $data_file | while read line; do \ isEven=$(( $counter % 2 )) if [ $isEven -eq 0 ]; then down+=("$line") fi (( counter ++ )) done echo ${down[@]} exit 

Mais tout ce que je vois est une string vide:

 host@user$ sh script.sh data_file host@user$ 

Le data_file contient ceci:

 81.11 11.63 81.11 11.63 81.11 11.63 81.11 11.63 

Où est mon erreur? Merci.

Vous ne pouvez pas referencer les mises à jour variables effectuées dans le process enfant (canal connecté pendant le blocage).

Au lieu de cela, alimente datatables en utilisant la redirection d'input comme ceci:

 #!/bin/bash data_file="$1" down=() counter=0 while read line; do isEven=$(( $counter % 2 )) if [ $isEven -eq 0 ]; then down+=("$line") fi (( counter ++ )) done < $data_file echo ${down[@]} exit