#! /bin/bash
# CopieTableau.sh
#
# Ce script a été écrit par Michael Zick.
# Utilisé ici avec sa permission.

#  Guide pratique "Passage par nom &amp; Retour par nom"
#+ ou "Construire votre propre instruction d'affectation".


CopieTableau_Mac() {

# Constructeur d'instruction d'affectation

    echo -n 'eval '
    echo -n "$2"                    # Nom de la destination
    echo -n '=( ${'
    echo -n "$1"                    # Nom de la source
    echo -n '[@]} )'

# Cela peut être une seule commande.
# Une simple question de style.
}

declare -f CopieTableau                     # Fonction "Pointeur".
CopieTableau=CopieTableau_Mac               # Constructeur d'instruction.

Hype()
{

# Hype le tableau nommé $1. 
# (L'ajoute au tableau contenant "Really Rocks".)
# Retour dans le tableau nommé $2.

    local -a TMP
    local -a hype=( Really Rocks )

    $($CopieTableau $1 TMP)
    TMP=( ${TMP[@]} ${hype[@]} )
    $($CopieTableau TMP $2)
}

declare -a avant=( Advanced Bash Scripting )
declare -a apres

echo "Tableau avant = ${avant[@]}"

Hype avant apres !!!!!!!!!!!!!!!!!!!!!!!!!

echo "Tableau après = ${apres[@]}"

# Trop de 'hype' ?

echo "Qu'est-ce que ${apres[@]:3:2}?"

declare -a modeste=( ${apres[@]:2:1} ${apres[@]:3:2} )
#                  -- extraction de la sous-chaine --

echo "Tableau modeste = ${modeste[@]}"

# Qu'arrive-t'il à 'avant' ?

echo "Tableau avant = ${avant[@]}"

exit 0
