[shell] type d'une variable ??
Fermé
younes
-
16 nov. 2006 à 11:47
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 17 nov. 2006 à 10:37
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 17 nov. 2006 à 10:37
A voir également:
- [shell] type d'une variable ??
- Classic shell windows 11 - Télécharger - Personnalisation
- Clear type - Guide
- Faiblesse type psy ✓ - Forum Jeux vidéo
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
5 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 nov. 2006 à 15:38
16 nov. 2006 à 15:38
Salut,
#!/bin/sh expr $var + 0 1>/dev/null 2>&1; statut=$? if test $statut -lt 2 then echo "$var" numérique filami20j
mamiemando
Messages postés
33410
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
2 décembre 2024
7 808
16 nov. 2006 à 15:13
16 nov. 2006 à 15:13
Les variables n'ont pas de types en shell (en fait ce sont toutes des chaines).
Le mieux c'est de tester avec une expression régulière par exemple avec sed.
Bonne chance
Le mieux c'est de tester avec une expression régulière par exemple avec sed.
Bonne chance
mamiemando
Messages postés
33410
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
2 décembre 2024
7 808
16 nov. 2006 à 18:30
16 nov. 2006 à 18:30
Astucieux :)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 nov. 2006 à 19:13
16 nov. 2006 à 19:13
Salut,
j'ai savais de l'existence de la variable $? du shell (et l'idée de tester le rétour d'une addition d'une chaîne avec un nombre m'a traversée l'esprit), mais j'étais au boulot, je n'avais pas la possibilité de tester.
Donc j'ai cherché sur net (j'ai l'habitude ;-)) et j'ai trouvé ce code dans un forum :-))
lami20j
j'ai savais de l'existence de la variable $? du shell (et l'idée de tester le rétour d'une addition d'une chaîne avec un nombre m'a traversée l'esprit), mais j'étais au boulot, je n'avais pas la possibilité de tester.
Donc j'ai cherché sur net (j'ai l'habitude ;-)) et j'ai trouvé ce code dans un forum :-))
lami20j
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
16 nov. 2006 à 18:45
16 nov. 2006 à 18:45
Je trouve aussi ;-))
Sinon on peut faire avec "grep" :
Sinon on peut faire avec "grep" :
if [ "$(echo $var | grep "^:digit:*$")" ]; then echo "La chaîne est numérique"; fiJ'avais aussi ça dans mes tablettes :
[ $var -eq 0 ] 2> /dev/null if [ $? -eq 0 -o $? -eq 1 ] then echo "La chaîne est numérique" fi;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 nov. 2006 à 19:15
16 nov. 2006 à 19:15
Salut,
j'attendais plutôt ta solution :-)) (c'est normal n'est-ce pas? :-)))))))
en revanche quand je teste je n'ai pas le résultat attendu.
Je suppose que tu as testé.
J'ai peut être loupé quelque chose?!
lami20j
j'attendais plutôt ta solution :-)) (c'est normal n'est-ce pas? :-)))))))
en revanche quand je teste je n'ai pas le résultat attendu.
Je suppose que tu as testé.
J'ai peut être loupé quelque chose?!
lami20j
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
16 nov. 2006 à 19:33
16 nov. 2006 à 19:33
;-\
Script avec "grep" :
Avec "test" ([ ]):
Script avec "grep" :
[jp@MDK tmpfs]$ cat essai_grep.sh #!/bin/bash # essai_grep.sh var=$1 if [ "$(echo $var | grep "^:digit:*$")" ] then echo "La chaîne est numérique" fi [jp@MDK tmpfs]$ ./essai_grep.sh 123 La chaîne est numérique [jp@MDK tmpfs]$ ./essai_grep.sh 123a [jp@MDK tmpfs]$ ./essai_grep.sh k123a [jp@MDK tmpfs]$ ./essai_grep.sh azerty [jp@MDK tmpfs]$ ./essai_grep.sh azerty12 [jp@MDK tmpfs]$ ./essai_grep.sh 1 La chaîne est numérique [jp@MDK tmpfs]$
Avec "test" ([ ]):
[jp@MDK tmpfs]$ cat essai_test.sh #!/bin/bash # essai_test.sh var=$1 [ $var -eq 0 ] 2> /dev/null if [ $? -eq 0 -o $? -eq 1 ] then echo "La chaîne est numérique" fi [jp@MDK tmpfs]$ ./essai_test.sh 123 La chaîne est numérique [jp@MDK tmpfs]$ ./essai_test.sh azerty [jp@MDK tmpfs]$ ./essai_test.sh aze123rty [jp@MDK tmpfs]$ ./essai_test.sh 123azerty [jp@MDK tmpfs]$ ./essai_test.sh 1 La chaîne est numérique [jp@MDK tmpfs]$J'ai pas de soucis ;-))
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
16 nov. 2006 à 22:23
16 nov. 2006 à 22:23
Re,
je ne sais pas pour quel raison chez moi ça ne marche pas.
que toi, tu n'as pas de soucis, c'est normal, c'est toi le maître:-)
En revanche je propose (ah, oui Miss, cette fois c'est ma solution :-)), je vais arrêter le plagiat :-))
je ne sais pas pour quel raison chez moi ça ne marche pas.
que toi, tu n'as pas de soucis, c'est normal, c'est toi le maître:-)
En revanche je propose (ah, oui Miss, cette fois c'est ma solution :-)), je vais arrêter le plagiat :-))
#!/bin/sh var=$1 if let $var 2>/dev/null then echo "$var numérique" else echo "$var non numérique" filami20j
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
16 nov. 2006 à 23:09
16 nov. 2006 à 23:09
Châpeau bas maître kanji ;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 896
>
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
17 nov. 2006 à 10:37
17 nov. 2006 à 10:37
J'ai trouvé pourquoi ça ne marche pas chez toi, tout simplement parce que le (nouveau) formatage des pages sur CCM m'efface mes "doubles crochets" (ouvrants et fermants) autour de l'expression :
;-))
[ [:digit:] ]Évidemment il ne faut pas d'espace entre les deux crochets et du coup l'expression dans le script doit ressembler à :
if [ "$(echo $var | grep "^[ [:digit:] ]*$")" ]toujours sans les espaces entre les crochets...
;-))