#!/bin/bash
# Exercising "eval" ...

y=`eval ls -l`  # Similaire à y=`ls -l`
echo $y         # mais les retours chariot sont supprimés parce que la variable
                # n'est pas entre guillemets.
echo
echo "$y"       # Les retours chariot sont préservés lorsque la variable se
                # trouve entre guillemets.

echo; echo

y=`eval df`     # Similaire à y=`df`
echo $y         # mais les retours chariot ont été supprimés.

#  Quand LF n'est pas préservé, il peut être plus simple d'analyser la sortie,
#+ en utilisant des outils comme "awk".

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

# Maintenant, nous vous montrons quoi faire d'utile avec "eval"...
# (Merci E. Choroba!)

version=3.4     #  Pouvons-nous répartir la version en deux parties, la version
                #+ majeure et la version mineure en une seule commande ?
echo "version = $version"
eval majeur=${version/./;mineur=}     #  Remplace '.' dans la version par ';mineur='
                                      #  La substitution ramène '3; minor=4'
                                      #+ donc eval donne mineur=4, majeur=3
echo majeur: $major, mineur: $mineur  #  majeur: 3, mineur: 4