Bonjour,
Je rencontre actuellement en soucis pour mettre le résultat d’une commande dans une variable.
Mon but est de récupérer le résultat d’une commande (Asterisk) et de l’a mettre dans une variable pour ensuite compter le nombre de caractère que retourne la commande. Voici mon script :
[code]#!/bin/bash
PATH=/usr/sbin/asterisk:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
testAsterisk=asterisk -rx 'test'
echo $testAsterisk
nombre=${#testAsterisk}
echo $nombre
[/code]
Je lance en mode test ma commande lorsque le service Asterisk est lancé et cela fonctionne :
bash -x check-nombres.sh
+ PATH=/usr/sbin/asterisk:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
++ asterisk -rx test
+ testAsterisk='No such command '\''test'\'' (type '\''core show help test'\'' for other possible commands)'
+ echo No such command ''\''test'\''' '(type' ''\''core' show help 'test'\''' for other possible 'commands)'
No such command 'test' (type 'core show help test' for other possible commands)
+ nombre=79
+ echo 79
79[/code]
Lancement de la commande lorsqu' Asterisk est arrêté :
[code]bash -x check-nombres.sh
+ PATH=/usr/sbin/asterisk:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
++ asterisk -rx test
Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
+ testAsterisk=
+ echo
+ nombre=0
+ echo 0
0
Comme on peut le voir lorsqu’ Asterisk est démarré la commande suivante fonctionne :
Mais lorsqu’ Asterisk est arrété, il n’arrive pas à mettre le résultat dans la variable et exécute la commande directement ! Pourquoi ? Avez vous une idée ?
J’ai essayé également de l’écrire de cette manière mais cela ne fonctionne pas non plus :
J’ai essayé de lancé les commande une à une sans passer par le script, échec également !
Je précise que ce code à été testé sur un autre serveur et cela fonctionne ! Lorsque le service Asterisk est arrêté il me renvoie bien le nombre de caractère :
bash -x check-nombres.sh
+ PATH=/usr/sbin/asterisk:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
++ asterisk -rx test
+ testAsterisk='Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)'
+ echo Unable to connect to remote asterisk '(does' /var/run/asterisk/asterisk.ctl 'exist?)'
Unable to connect to remote asterisk (does /var/run/asterisk/asterisk.ctl exist?)
+ nombre=81
+ echo 81
81
C’est pour ça que je ne comprend pas, ça me parait pas logique…
Avez vous une idée ?