Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/03/2011, à 20:29

neokal

[RESOLU] Structure comparative

Bonjour à tous,
Voila j'écrit un script et pour le moment pas de soucis mais voila que je dois comparer deux variables
Quand je créé un fichier script.sh contenant

#!/bin/bash

var1="truc"
var2="truc"

echo "var1=$ext"
echo "var2=$var2"

if [[ $var1 == $var2 ]]
    then echo 'Les deux valeurs sont identiques'
fi
if ( $var1 == $var2 )
    then echo 'Les deux valeurs sont identiques'
fi

exit 0

la console me renvoi

script.sh: 11: [[: not found
script.sh: 14: truc: not found

J'ai chercher tous les tutos possibles et imaginable essayer plein de syntaxe différente et la je déclare forfait, je dois etre un peu abrutit mais vraiment ya un truc qui m'échappe
SVP éclairez moi car la je suis un peu bloqué en faite

Dernière modification par neokal (Le 05/03/2011, à 10:13)


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#2 Le 04/03/2011, à 20:38

neokal

Re : [RESOLU] Structure comparative

ce qui est fou c'est que j'utilise deja deux autres comparaison

 if ((test -f $file)) 
et
if !($path)

qui fonctionne a merveille


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#3 Le 04/03/2011, à 20:39

Bousky

Re : [RESOLU] Structure comparative

if [ "$var1" = "$var2" ]

Tu n'as pas besoin ici des tests étendus, == c'est en C, et les guillemets sont indispansables si l'une des variables peut être vide. Et les espaces à l'intérieur comme à l'extérieur des crochets sont indispensables.


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#4 Le 04/03/2011, à 20:43

neokal

Re : [RESOLU] Structure comparative

merci j'avou que la syntax me rebute pas mal, notament sur les fonctions ou j'ai galérer un petit moment
trop habitué au php et C je crois
en tous les cas merci et bonne soirée a toi


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#5 Le 04/03/2011, à 20:45

mjdon

Re : [RESOLU] Structure comparative

la partie

if [[ $var1 == $var2 ]]
    then echo 'Les deux valeurs sont identiques'
fi

fonctionne bien chez moi. Les erreurs classiques c'est quand on oublie des espaces autour des [[ . Donc la j'ai pas d'idée

Hors ligne

#6 Le 04/03/2011, à 20:48

Bousky

Re : [RESOLU] Structure comparative

Il me semble que les tests étendus ( entre [[ ]]) peuvent être activés-désactivés au niveau de bash.


Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#7 Le 04/03/2011, à 20:48

neokal

Re : [RESOLU] Structure comparative

non elle marche pas chez moi j'ignore pourquoi, c'est bien pour ca que j'ai posté car la je pigeais vraiment pas
J'ai  :
GNU bash, version 4.1.5(1)
en tous les cas

if [ "$var1" = "$var2" ]

fonctionne bien et va me permettre d'avancer
je trouve tout cela trés curieux si quelqu'un connait la réponse a ce mystére...

Dernière modification par neokal (Le 04/03/2011, à 20:55)


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#8 Le 04/03/2011, à 21:05

neokal

Re : [RESOLU] Structure comparative

si vous savez comment activer les tests étendu au niveau du bash svp car je risque d'étre bloqué sur pas mal de truc (ca marche mais je trouve pas mon scripts trés beau au final , trop de variable de partout et pour rien)
je prendrais le temps de trouver dans le week end , si j'y arrive je posterais ici
HELP


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#9 Le 05/03/2011, à 00:03

Watael

Re : [RESOLU] Structure comparative

ça

GNU bash, version 4.1.5(1)

ne signifie pas que tu utilises bash.

$SHELL devrait être /bin/bash
et $BASH_VERSION être 4.1.5(1)-release


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#10 Le 05/03/2011, à 02:06

neokal

Re : [RESOLU] Structure comparative

echo $BASH
/bin/bash
echo $BASH_VERSION
4.1.5(1) - release

Bon du coup j'arrive quand meme a faire ce que je veux mais c'est vraiment pas beau du tout
Comment activer les tests étendus SVP , j'ai chercher un peu partout sur le net et pour le moment je ne trouve rien
Je misére un peu et je risque de souvent mettre + de temps à réaliser ce que je veux faire
Merci


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#11 Le 05/03/2011, à 05:39

Watael

Re : [RESOLU] Structure comparative

est-ce que, par hasard, tu tenterais d'executer ton script par

sh script.sh

parce que le comportement que tu décris est celui de dash, pour lequel sh est un lien.

la bonne façon de lancer un script est de mettre un hashbang désignant le bon shell au début du script

#!/bin/bash

de le rendre executable

chmod u+x script.sh

, et enfin le script se lance tout seul (ou presque)

./script.sh

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#12 Le 05/03/2011, à 09:54

neokal

Re : [RESOLU] Structure comparative

Merci Watael
C'est exactement ca en faite !!
Désolé d'avoir posté pour ca mais j'avou que la j'étais pas mal rebuté pour le coup
Je pensais que sh lancait le bash tout bétement faut dire que je suis sous linux depuis 15 jours donc je me casse forcément un peu les dents ;-)
Va falloir que je perde ma mauvaise habitude >sh
Merci franchement


Celui qui se transforme en bête se délivre de la douleur d'être un homme...

Hors ligne

#13 Le 05/03/2011, à 22:51

sputnick

Re : [RESOLU] Structure comparative

(( ... ))

c'est pour l'arithmetique


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne