#!/bin/bash

#  Conseil :
#  En cas de doute sur la manière dont une condition sera évaluée,
#+ testez-la plutôt avec 'if'.

echo

echo "Test de \"0\""
if [ 0 ]      # zéro
then
  echo "0 est vrai."
else
  echo "0 est faux."
fi            # 0 est vrai.

echo

echo "Test de \"1\""
if [ 1 ]      # un
then
  echo "1 est vrai."
else
  echo "1 est faux."
fi            # 1 est vrai.

echo

echo "Test de \"-1\""
if [ -1 ]     # moins un
then
  echo "-1 est vrai."
else
  echo "-1 est faux."
fi            # -1 est vrai.

echo

echo "Test de \"NULL\""
if [ ]        # NULL (condition vide)
then
  echo "NULL est vrai."
else
  echo "NULL est faux."
fi            # NULL est faux.

echo

echo "Test de \"xyz\""
if [ xyz ]    # chaîne de caractères
then
  echo "Cette chaîne de caractères pris au hasard est vraie."
else
  echo "Cette chaîne de caractères pris au hasard est fausse."
fi            # Cette chaîne de caractères pris au hasard est vraie.

echo

echo "Test de \"\$xyz\""
if [ $xyz ]   # Teste si $xyz est nul, mais...
              # c'est seulement une variable non initialisée.
then
  echo "Une variable non initialisée est vraie."
else
  echo "Une variable non initialisée est fausse."
fi            # Une variable non initialisée est fausse.

echo

echo "Test de \"-n \$xyz\""
if [ -n "$xyz" ]            # Plus correct.
then
  echo "Une variable non initialisée est vraie."
else
  echo "Une variable non initialisée est fausse."
fi            # Une variable non initialisée est fausse.

echo

xyz=          # Initialisée, mais à une valeur nulle.

echo "Test de \"-n \$xyz\""
if [ -n "$xyz" ]
then
  echo "Une variable nulle est vraie."
else
  echo "Une variable nulle est fausse."
fi            # Une variable nulle est fausse.


echo


# Quand "faux" est-il vrai?

echo "Test de \"false\""
if [ "false" ]              #  En fait, "false" n'est qu'une chaîne de
	                    #+ caractères.
then
  echo "\"false\" est vrai." #+ et il est testé vrai.
else
  echo "\"false\" est faux."
fi                          # "false" est vrai.

echo

echo "Test de \"\$false\""  # De nouveau, une chaîne non initialisée.
if [ "$false" ]
then
  echo "\"\$false\" est vrai."
else
  echo "\"\$false\" est faux."
fi            # "$false" est faux.
              # Maintenant, nous obtenons le résultat attendu.


#  Qu'arriverait-t'il si nous testions la variable non initialisée "$true" ?

echo

exit 0
