Csh echo " " puis test if.???

Résolu/Fermé
Carri€ Messages postés 41 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 27 novembre 2007 - 15 oct. 2007 à 11:02
 wx - 23 nov. 2009 à 14:38
Bonjour,
je travail sur un petit programme en c shell dans lequel je voudrai afficher une variable pour faire du debuggage.
Le problème c'est que cette variable qui est généralement un nombre entier peut devenir rien du tous.
quand je fais > echotc q${Var}q # j'obtiens q' inconnue.cit 'q
Je pensais quelle aurait pu être un séparateur ou quelque chose comme ca mais je ne sais pas comment faire.

Je cherche a l'afficher pour ensuite la tester afin que lorsqu'elle est égale a "rien" je puisse en avertir l'utilisateur.
Je pourrai peut être faire mon test avec if ($Var different d'un nombre entier) then....et même ça je ne sais pas comment l'écrire :o(

Merci de votre précieuse aide.
A voir également:

5 réponses

dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
15 oct. 2007 à 14:27
définir la variable au début
set Var=""
sinon utiliser:
${?var}
Substitutes the string 1 if var is set or 0 if it is
not set.
0
Carri€ Messages postés 41 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 27 novembre 2007 29
15 oct. 2007 à 15:13
dubcek, je te remercie.
Quand je fais set Var ="" ca ne donne rien avec mon test if. Mais c'est deja ca de pris car la syntaxe du if n'etait pas bonne.;o)

Autrement lorsque je fais echo ${?var} ca me donne 1 alors d'apres ce que tu m as dis c'est que ma variable contient bien quelque chose..on avance. Mais quoi? je ne sais. Elle devrait être un "space character" ou même une combinaison de plusieurs space character.
${?var} est marqué dans mes archives...héhé bien pratique.

Je suis en train d'étudier la piste du awk pour tester si ma variable est un nombre ou non. Pour moi c'est compliqué à faire mais le raisonnement sera peut être plus simple et s'appliquera à un cas plus général. Car finalement, je me contenterai de savoir si cette variable est un nombre ou non, peux importe ce que c'est d'autre (meme si j'aimerai bien le savoir).
0
salt puter
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 621
15 oct. 2007 à 15:31
hello
ce test, c'est juste pour tester si la variable est définie, alors je peux l'afficher:
if ( $?Var ) then
echo "$Var"
les shells ou awk, n'ont pas des variables typées :
set var=1 var est numérique
set var="hello" var est un string
mais je peux utiliser un string de chiffres set var="123"
c'est à l'utilisateur de faire les bons tests
pour utiliser des espaces dans une variable, il faut utiliser quote ou guillemets: set var=" a "
voir dans man test, on teste les nombres avec -eq et les strings avec =
0
Carri€ Messages postés 41 Date d'inscription lundi 19 février 2007 Statut Membre Dernière intervention 27 novembre 2007 29
15 oct. 2007 à 15:37
okkkk j'y vois déjà un peu mieu...je vais méditer la dessus et reviendrai dès que j'ai du nouveau, je vais essayer de suite.(de toute facon je suis toujours dessus depuis ce matin lol)
Merci bien dubcek. :o)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,
Désolé pour le délai....
Alors pour faire cours et bien...lorsque je tape: if ( $?Var ) then
echo "$Var"
ca ne m'affcihe toujours rien puisqu'en effet j'ai découvert que ma variable faisait parti des caractères de contrôle. Pour le découvrir et afin d'effectuer mon test je suis passer par "awk". J'envoi ma variable a un petit programme qui va la tester:
echo $variable | awk -f Monprogramme.awk

Et dans Monprogramme.awk j'ai écrit:
#!/bin/awk
BEGIN{
}
/[([:cntrl:]+)] / {print 2}; ce qui affiche "2" si l'argument,ici la contenu de ma variable, est un caractere de controle.(resultat que j ai obtenu lorsque ca n'affichait rien).
{if (ARGC-0 == /:digit:/) {print 1}}; affiche "1" si ARGC-0 (eq $variable) est un digit....ce dont je voulais m'assurer au depart.
END{
}

Voili voilou! Y'a surement encore mieu mais je ne suis pas très à l'aise avec les classes [:digit:] etc... et pous le moment ca me suffit amplement!!!
Merci de votre aide.
0