Script qui fonctionne en bash mais pas en Perl sniff...
Résolu
LezardMoo
Messages postés
554
Date d'inscription
Statut
Membre
Dernière intervention
-
LezardMoo Messages postés 554 Date d'inscription Statut Membre Dernière intervention -
LezardMoo Messages postés 554 Date d'inscription Statut Membre Dernière intervention -
Bonsoir tout le monde !!
Voilà, je code un petit programme et pour l'instant j'en suis à la portion detection usb.
j'ai donc fait un test en bash
On ne peut plus simple.
La même chose en Perl
Donc le problème:
Suand j'exécute le script bash avec la clé connectée, "coucou" s'affiche, quand je la déconnecte (le script tourne toujours) "pas coucou" s'affiche, tout va bien.
Par contre avec le script perl...
Quand j'exécute le script avec la clé connectée, "coucou" s'affiche, quand je la débranche(le script tourne toujours) "pas coucou" ne s'affiche pas -_-
J'ai l'impression que le script ne repasse pas dans le if et donc par conséquent il ne doit pas repasser avant dans le while...
Qu'en pensez vous ?
Merci d'avance ( :
Voilà, je code un petit programme et pour l'instant j'en suis à la portion detection usb.
j'ai donc fait un test en bash
#!/bin/bash
while [ 1 ]
do
if [ -b "/dev/disk/by-uuid/4489-7E11" ] ; then
echo "coucou"
#exit 0
sleep 1
clear
else
echo "pas coucou"
sleep 1
clear
fi
done
On ne peut plus simple.
La même chose en Perl
#!/usr/bin/perl
use strict;
use warnings;
my $u = "4489-7E11";
my $uuid = 'ls -l /dev/disk/by-uuid/';
#print $uuid;
#exit;
while (1) {
if("$uuid" =~ /${u}/) {
print "coucou\n";
sleep(1);
system("clear");
}else {
print "pas coucou\n";
sleep(1);
system("clear");
}
}
Donc le problème:
Suand j'exécute le script bash avec la clé connectée, "coucou" s'affiche, quand je la déconnecte (le script tourne toujours) "pas coucou" s'affiche, tout va bien.
Par contre avec le script perl...
Quand j'exécute le script avec la clé connectée, "coucou" s'affiche, quand je la débranche(le script tourne toujours) "pas coucou" ne s'affiche pas -_-
J'ai l'impression que le script ne repasse pas dans le if et donc par conséquent il ne doit pas repasser avant dans le while...
Qu'en pensez vous ?
Merci d'avance ( :
A voir également:
- Script qui fonctionne en bash mais pas en Perl sniff...
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Bingo bash - Télécharger - Divers Jeux
- Bash addition ✓ - Forum Shell
2 réponses
hello
vérifier ce que retourne, en ligne de commande:
vérifier ce que retourne, en ligne de commande:
ls -l /dev/disk/by-uuid/ | grep 4489-7E11et dans perl:
if("$uuid" =~ /${u}/)
LezardMoo
Messages postés
554
Date d'inscription
Statut
Membre
Dernière intervention
14
J'ai bien évidemment fait toute une série de tests avant de poster
Salut LezardMoo,
CCM transforme les backticks (AltGr - 7) en ', mais je suppose que ton
On peut les remplacer avec l'opérateur équivalent qx.
Cependant, ton problème est que le résultat de
Donc, il faudrait juste faire
et dans la boucle while, et avant le if :
Par ailleurs, les accolades sont inutiles dans
Dal
CCM transforme les backticks (AltGr - 7) en ', mais je suppose que ton
my $uuid = 'ls -l /dev/disk/by-uuid/';est bien avec des apostrophes arrières.
On peut les remplacer avec l'opérateur équivalent qx.
Cependant, ton problème est que le résultat de
lsn'est évalué que lors de la déclaration de $uuid et non pas à chaque itération de la boucle.
Donc, il faudrait juste faire
my $uuid;avant la boucle.
et dans la boucle while, et avant le if :
$uuid = qx(ls -l /dev/disk/by-uuid/);
Par ailleurs, les accolades sont inutiles dans
if("$uuid" =~ /${u}/), il suffit de te référer à
$u.
Dal