#1 Le 24/12/2011, à 04:10
- n3o51
[resolu]commande dans une variable
j'essaie cela mais j'ai droit a commande introuvable a chaque fois
chargeur = 'cat /proc/acpi/battery/BAT1/state | grep "charging" | awk '{print $3}''
visiblement une erreur de guillemets mais ou et lesquels ?
Dernière modification par n3o51 (Le 24/12/2011, à 13:25)
Welcome to the real world
________________________________
Hors ligne
#2 Le 24/12/2011, à 09:09
- credenhill
Re : [resolu]commande dans une variable
hello
pas d'espace autour de = et on peut simplifier
chargeur=$(awk '/charging/ {print $3}' /proc/acpi/battery/BAT1/state)
Hors ligne
#3 Le 24/12/2011, à 10:53
- Tomzz
Re : [resolu]commande dans une variable
Bonjour,
ça, ça te met le résultat de la commande dans la variable:
chargeur=$(awk '/charging/ {print $3}' /proc/acpi/battery/BAT1/state)
le $(...) exécute la commande
Si tu veux vraiment mettre cette commande dans une variable pour l,exécuter plus tard, tu peux faire:
chargeur="awk '/charging/ {print $3}' /proc/acpi/battery/BAT1/state"
puis plus loin pour l'exécution:
eval "${chargeur}"
Dernière modification par Tomzz (Le 24/12/2011, à 10:54)
Hors ligne
#4 Le 24/12/2011, à 12:23
- n3o51
Re : [resolu]commande dans une variable
bonjour merci a vous deux cela dit la commande que vous me donné renvoie
charging state: charged
alors que la mienne me renvoie
charged
comme ça je peut après je pense faire un test qui va me si le statut est différents de charged me mettre une notification avec notify.
EDIT : ce qui est drole c'est que votre commande renvoie taper a la main dans un term
charged
et dans un script
charging state: charged
Voila ce que je voudrais faire mais qui ne marche pas
#!/bin/bash
chargeur="awk '/charging/ {print $3}' /proc/acpi/battery/BAT1/state"
if [$(eval "${chargeur}" | awk '{print $3}') == "charged"]
then
echo "charger"
fi
Dernière modification par n3o51 (Le 24/12/2011, à 12:33)
Welcome to the real world
________________________________
Hors ligne
#5 Le 24/12/2011, à 13:17
- Postmortem
Re : [resolu]commande dans une variable
Salut,
Fais comme ceci dans ton script :
#!/bin/bash
chargeur=$(awk '/charging/ {print $3}' /proc/acpi/battery/BAT1/state)
if [ "$chargeur" == "charged" ]
then
echo "charger"
fi
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#6 Le 24/12/2011, à 13:25
- n3o51
Re : [resolu]commande dans une variable
Merci bien ca fonctionne
Welcome to the real world
________________________________
Hors ligne
#7 Le 24/12/2011, à 13:47
- Postmortem
Re : [resolu]commande dans une variable
La solution de Tomzz ne fonctionnait pas correctement car le $3 était perdu.
$3 est égal au 3ème argument passé à ton script et donc, sans lui passer d'argument, $3 était vide et donc supprimé de la commande awk. Cela provoquait donc l'affichage de la ligne complète.
$ chargeur="awk '/charging/ {print $3}' /proc/acpi/battery/BAT1/state"
$ echo "$chargeur"
awk '/charging/ {print }' /proc/acpi/battery/BAT1/state
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#8 Le 24/12/2011, à 13:52
- n3o51
Re : [resolu]commande dans une variable
Merci pour ce compléments d'information bonne fête a toi
Welcome to the real world
________________________________
Hors ligne
#9 Le 24/12/2011, à 15:59
- Tomzz
Re : [resolu]commande dans une variable
Bonjour,
Oups, exact.
Ceci dit la solution avec eval n'a aucun intérêt ici.
tu dois même peut-être pouvoir faire:
#!/bin/bash
if [ "$(awk '/charging/ {print $3}' /proc/acpi/battery/BAT1/state)" == "charged" ]
then
echo "charger"
fi
PS: juste pour info, pour faire marcher avec eval ça doit marcher en échappant le $3 avec \ :
chargeur="awk '/charging/ {print \$3}' /proc/acpi/battery/BAT1/state"
eval "${chargeur}"
Hors ligne
#10 Le 26/12/2011, à 13:39
- n3o51
Re : [resolu]commande dans une variable
Merci Tomzz
Welcome to the real world
________________________________
Hors ligne