#!/bin/bash
# array-function.sh : Passer un tableau à une fonction et...
#                     "renvoyer" un tableau à partir d'une fonction


Passe_Tableau ()
{
  local tableau_passe   # Variable locale.
  tableau_passe=( `echo "$1"` )
  echo "${tableau_passe[@]}"
  #  Liste tous les éléments du nouveau tableau déclaré
  #+ et initialisé dans la fonction.
}


tableau_original=( element1 element2 element3 element4 element5 )

echo
echo "tableau_original = ${tableau_original[@]}"
#                      Liste tous les éléments du tableau original.


# Voici une astuce qui permet de passer un tableau à une fonction.
# **********************************
argument=`echo ${tableau_original[@]}`
# **********************************
#  Emballer une variable
#+ avec tous les éléments du tableau original séparés avec une espace.
#
# Notez que d'essayer de passer un tableau en lui-même ne fonctionnera pas.


# Voici une astuce qui permet de récupérer un tableau comme "valeur de retour".
# *****************************************
tableau_renvoye=( `Passe_Tableau "$argument"` )
# *****************************************
# Affecte une sortie de la fonction à une variable de type tableau.

echo "tableau_renvoye = ${tableau_renvoye[@]}"

echo "============================================================="

#  Maintenant, essayez encore d'accèder au tableau en dehors de la
#+ fonction.
Passe_Tableau "$argument"

# La fonction liste elle-même le tableau, mais...
#+ accèder au tableau de l'extérieur de la fonction est interdit.
echo "Tableau passé (de l'intérieur de la fonction) = ${tableau_passe[@]}"
# Valeur NULL comme il s'agit d'une variable locale.

echo

exit 0
