#!/bin/bash
#  badread.sh :
#  Tentative d'utiliser 'echo' et 'read'
#+ pour affecter non interactivement des variables.

a=aaa
b=bbb
c=ccc

echo "un deux trois" | read a b c
# Essaie d'affecter a, b et c.

echo
echo "a = $a"  # a = aaa
echo "b = $b"  # b = bbb
echo "c = $c"  # c = ccc
# L'affectation a échoué.

# ------------------------------

# Essaie l'alternative suivante.

var=`echo "un deux trois"`
set -- $var
a=$1; b=$2; c=$3

echo "-------"
echo "a = $a"  # a = un
echo "b = $b"  # b = deux
echo "c = $c"  # c = trois 
# Affectation réussie.

# ------------------------------

#  Notez aussi qu'un echo pour un 'read' fonctionne à l'intérieur d'un
#+ sous-shell.
#  Néanmoins, la valeur de la variable change *seulement* à l'intérieur du
#+ sous-shell.

a=aaa          # On recommence.
b=bbb
c=ccc

echo; echo
echo "un deux trois" | ( read a b c;
echo "À l'intérieur du sous-shell : "; echo "a = $a"; echo "b = $b"; echo "c = $c" )
# a = un
# b = deux
# c = trois
echo "-----------------"
echo "À l'extérieur du sous-shell : "
echo "a = $a"  # a = aaa
echo "b = $b"  # b = bbb
echo "c = $c"  # c = ccc
echo

exit 0
