test numerique d'une variable en csh

test numerique d'une variable en csh - Shell/Batch - Programmation

Marsh Posté le 08-02-2006 à 14:12:43    

bonjour,
j'aimerai tester en csh si une variable est un nombre ou pas.
 
Avez vous une idée ?
 
merci.
 
 


---------------
-->>C'est l'histoire d'un gars qui rêve qu'il mange de la guimauve.Il se réveille et il a plus d'oreiller.<<--
Reply

Marsh Posté le 08-02-2006 à 14:12:43   

Reply

Marsh Posté le 08-02-2006 à 15:00:00    

SUCCES=0
ECHEC=-1
 
est_alpha ()  # Teste si le *premier caractère* de la chaîne est alphabétique.
{
if [ -z "$1" ]                # Pas d'argument passé?
then
  return $ECHEC
fi
 
case "$1" in
[a-zA-Z]*) return $SUCCES;;  # Commence avec une lettre?
*        ) return $ECHEC;;
esac
}             # Comparer ceci avec la fonction "isalpha ()" en C.
 
 
est_alpha2 ()   # Teste si la *chaîne entière* est alphabétique.
{
  [ $# -eq 1 ] || return $ECHEC
 
  case $1 in
  *[!a-zA-Z]*|"" ) return $ECHEC;;
               *) return $SUCCES;;
  esac
}
 
est_numerique ()    # Teste si la *chaîne entière* est numérique.
{                   # En d'autres mots, teste si la variable est de type entier.
  [ $# -eq 1 ] || return $ECHEC
 
  case $1 in
  *[!0-9]*|"" ) return $ECHEC;;
            *) return $SUCCES;;
  esac
}
 
 
 
verif_var ()  # Interface à est_alpha ().
{
if est_alpha "$@"
then
  echo "\"$*\" commence avec un caractère alpha."
  if est_alpha2 "$@"
  then        # Aucune raison de tester si le premier caractère est non alpha.
    echo "\"$*\" contient seulement des caractères alpha."
  else
    echo "\"$*\" contient au moins un caractère non alpha."
  fi  
else
  echo "\"$*\" commence avec un caractère non alpha."
              # Aussi "non alpha" si aucun argument n'est passé.
fi
 
echo
 
}
 
verif_numerique ()  # Interface à est_numerique ().
{
if est_numerique "$@"
then
  echo "\"$*\" contient seulement des chiffres [0 - 9]."
else
  echo "\"$*\" a au moins un caractère qui n'est pas un chiffre."
fi
 
echo
 
}


 
http://abs.traduc.org/abs-3.7-fr/testbranch.html

Message cité 1 fois
Message édité par kaloskagatos le 08-02-2006 à 15:01:04

---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
Reply

Marsh Posté le 08-02-2006 à 15:12:02    

je parlais en csh
 
mais merci quand meme  :)


---------------
-->>C'est l'histoire d'un gars qui rêve qu'il mange de la guimauve.Il se réveille et il a plus d'oreiller.<<--
Reply

Marsh Posté le 08-02-2006 à 15:24:02    

ok pardon je connais pas bien le csh j'utilise bash


---------------
« Le hasard, c’est différent de la chance. Parce que la chance, je n'en ai jamais. »
Reply

Marsh Posté le 09-02-2006 à 09:07:11    

up  :bounce:


---------------
-->>C'est l'histoire d'un gars qui rêve qu'il mange de la guimauve.Il se réveille et il a plus d'oreiller.<<--
Reply

Marsh Posté le 11-02-2006 à 08:49:17    

kaloskagatos a écrit :

SUCCES=0
ECHEC=-1
 
est_alpha ()  # Teste si le *premier caractère* de la chaîne est alphabétique.
{
if [ -z "$1" ]                # Pas d'argument passé?
then
  return $ECHEC
fi
 
case "$1" in
[a-zA-Z]*) return $SUCCES;;  # Commence avec une lettre?
*        ) return $ECHEC;;
esac
}             # Comparer ceci avec la fonction "isalpha ()" en C.
 
 
est_alpha2 ()   # Teste si la *chaîne entière* est alphabétique.
{
  [ $# -eq 1 ] || return $ECHEC
 
  case $1 in
  *[!a-zA-Z]*|"" ) return $ECHEC;;
               *) return $SUCCES;;
  esac
}
 
est_numerique ()    # Teste si la *chaîne entière* est numérique.
{                   # En d'autres mots, teste si la variable est de type entier.
  [ $# -eq 1 ] || return $ECHEC
 
  case $1 in
  *[!0-9]*|"" ) return $ECHEC;;
            *) return $SUCCES;;
  esac
}
 
 
 
verif_var ()  # Interface à est_alpha ().
{
if est_alpha "$@"
then
  echo "\"$*\" commence avec un caractère alpha."
  if est_alpha2 "$@"
  then        # Aucune raison de tester si le premier caractère est non alpha.
    echo "\"$*\" contient seulement des caractères alpha."
  else
    echo "\"$*\" contient au moins un caractère non alpha."
  fi  
else
  echo "\"$*\" commence avec un caractère non alpha."
              # Aussi "non alpha" si aucun argument n'est passé.
fi
 
echo
 
}
 
verif_numerique ()  # Interface à est_numerique ().
{
if est_numerique "$@"
then
  echo "\"$*\" contient seulement des chiffres [0 - 9]."
else
  echo "\"$*\" a au moins un caractère qui n'est pas un chiffre."
fi
 
echo
 
}


 
http://abs.traduc.org/abs-3.7-fr/testbranch.html


 
Il y a plus simple. Il suffit de déléguer aux programmes adéquats ce que le shell ne sait pas faire par lui-même...

#!/bin/sh
expr $var + 0 1>/dev/null 2>&1; statut=$?
if test $statut -lt 2
then
     echo "$var" numérique
fi


 
Je pense qu'il n'y aura aucun souci pour convertir ce script en csh...


Message édité par Sve@r le 11-02-2006 à 11:14:49

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed