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 11/04/2007, à 06:37

Cyberfreak

[resolu]Bash me fait des miseres..

Bonjour.
Je cherche a ecrire un bash qui teste 2 valeurs
voici mon script :

#!/bin/bash
if (( $1 > $2 ))
then
echo trop gros
else
echo ok
fi

Et voici ce qu'il me fait :

sh test.sh 34 54
test.sh: 7: 34: not found
ok

sh test.sh 54 34
test.sh: 7: 54: not found
ok

J'ajoute qu'il me cree un fichier vide qui s'appelle comme le second parametre (soit 54 et 34)
J'ai une erreur de syntaxe quelque part?

Dernière modification par Cyberfreak (Le 11/04/2007, à 13:55)


Si ca marche comme ca, ne changez rien.

Hors ligne

#2 Le 11/04/2007, à 08:30

woodstock

Re : [resolu]Bash me fait des miseres..

ben... j'ai recopié ton script tel que ci-dessus et il fonctionne parfaitement chez moi... (bash 2.05b sous sarge)

Hors ligne

#3 Le 11/04/2007, à 09:35

francois-web

Re : [resolu]Bash me fait des miseres..

Cyberfreak a écrit :

J'ajoute qu'il me cree un fichier vide qui s'appelle comme le second parametre (soit 54 et 34)

Est-ce qu'il se comporte pareil si au lieu de le lancer en faisant sh test.sh, tu le lances en faisant ./test.sh ?

Chez moi ça fonctionne aussi correctement sad
Ca veut dire que ton script est excellent smile


22.04 // Gnome-Shell

Hors ligne

#4 Le 11/04/2007, à 11:37

Cyberfreak

Re : [resolu]Bash me fait des miseres..

Bon...
J'ai essaye sur un autre pc, ca marche aussi nikel.
C'est donc le bash d'ubuntu qui est bugge?

Que faire?
si je fais apt-get remove bash, est-ce que je pourrai encore faire apt-get install bash ensuite?


Si ca marche comme ca, ne changez rien.

Hors ligne

#5 Le 11/04/2007, à 13:43

kaworu

Re : [resolu]Bash me fait des miseres..

Salut !
Si je me trompe pas, le /bin/sh d'ubuntu pointe vers /bin/dash qui n'est pas /bin/bash.
En effet il te crée un fichier comme le nom du second paramètre, car dash ne vas pas interpréter (( ... )) comme tu le voudrait (expansion arithmétique) et comme bash le ferai. Donc le signe > devient non pas un opérateur de comparaison mais une redirection de flux ! (comme si tu fais "echo "foo" > bar).

Pour exécuter ton programme tu devrais plutôt faire soit :

# il faut que test.sh soit exécutable ;)
./test.sh

soit

bash test.sh

Autrement pour le test, je te conseil de privilégier le [ POSIX (donc plus portable) que l'expansion arithmétique (( ... )).
ton script donnerai :

#!/bin/bash
if [ $1 -gt $2 ]
then
echo trop gros
else
echo ok
fi

(ce script par exemple, doit marcher avec dash).

Dernière modification par kaworu (Le 11/04/2007, à 13:47)


"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."

Hors ligne

#6 Le 11/04/2007, à 13:55

Cyberfreak

Re : [resolu]Bash me fait des miseres..

Oui, mais non, car c'est pour tester des nombres d'octets, et il me dit que ca depasse les valeurs autorisees par test.

Bon, ceci dit, c'etait en effet un probleme de fichier executable... c bizarre, d'habitude ca marche comme ca.


Si ca marche comme ca, ne changez rien.

Hors ligne