Rechercher : dans
Par :

Bash - test sur le type d'une variable

Dernière réponse le 21 déc 2007 à 14:26:04 Arrakis, le 21 déc 2007 à 13:40:05 
 Signaler ce message aux modérateurs

Bonjour,

Je cherche a tester si une variable rentrée par l'utilisateur (read) est un entier de 4 digits.

if [ $var  = [[:digit:]{4}] ]; then
...

ne fonctionne pas, alors qu 'un

grep  [[:digit:]{4}] fichier

fonctionne, je ne comprend pas trop.

merci de votre aide.
Configuration: Linux
Firefox 2.0.0.11

Meilleures réponses pour « bash test sur le type d'une variable » dans :
[Shell] Tester une variable numérique Voir Tester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Le remplacement de variables en shell Bash Voir=Le remplacement de variables= Introduction Il peut s'avérer utile de s'assurer qu'une variable est bien définie avant de procéder à son remplacement, ou tout simplement de s'assurer que celle-ci n'est pas vide, et dans ce cas de l'initialiser avec...
Le langage Python est faiblement typé VoirMythe Le langage de programmation Python est faiblement typé, comme le php ou le Basic. Réalité FAUX. Explications Le Python est un langage à typage fort dynamique. Démonstration: >>> a="toto" >>> b=5 >>> print a+b Traceback (most recent...
Bash - Les paramètres VoirIntroduction Les paramètres positionnels Exemple 1 Les paramètres spéciaux Exemple 2 Initialiser des paramètres - La commande "set" - Exemples - La commande "shift" - Exemple 3 Introduction Il est possible de fournir à un script,...
Javascript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. En Javascript, les noms de variables peuvent être aussi long que l'on désire,...
Langage C++ - Les types de données VoirLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Langage C - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...

1

Keff, le 21 déc 2007 à 13:44:44

Lut'

Je n'y connais pas grand chose mais le ; après le if, il me choque.

if [ $var = [[:digit:]{4}] ]; then


Sur tous les scripts que j'ai vu, il n'yavait pas de point-virgule à cet endroit.

@

Répondre à Keff

2

Arrrakis, le 21 déc 2007 à 13:49:26

Il y a un ; entre chaque mot clef

if [ $var = [[:digit:]{4}] ]; then
est équivalent a
if [ $var = [[:digit:]{4}] ]
then

Le problème vient de l'expression régulière.

Répondre à Arrrakis

3

jj, le 21 déc 2007 à 13:57:57

Ca peut résoudre ton problème avec une autre écriture :

#!/bin/bash
read var

if [[ "$var" == [0-9][0-9][0-9][0-9] ]]
then
echo "ok"
fi

avec le programme test, que tu invoque avec les crochets, il faut les doubler pour une expr
cordialement

Répondre à jj

4

 Arrrakis, le 21 déc 2007 à 14:26:04

Bon j'ai trouvé, il manquait bien un = mais surtout je n'utilisait pas la bonne variable, y'avait une lettre de difference :D

comment perdre 2 heures...

Répondre à Arrrakis
Collection CommentÇaMarche.net