- zeqL,
Bonjour,
J'essaie en ce moment de réaliser un petit script shell pour faciliter le test d'une carte électronique tournant sous linux. Je suis sous Busybox avec un shell simple (POSIX, il n'y a pas de tableaux par exemple).
Mon script communique avec un périphérique en SPI via un driver, je ne m'occupe pas de la gestion du SPI, j'ai juste à donner le numéro de registre que je veux lire ou écrire avec la data. Ceci se fait via les fichiers d'interfaces dans /proc.
Lorsque je teste à la main l'écriture ou la lecture d'un registre voici l'output que j'ai :
1 2 3 4 | root@OpenWrt:/# echo write reg 0x00 0x40 > /proc/bus/spi/cap11xx/cap11xx write register 0x00 = 0x40 root@OpenWrt:/# echo read reg 0x03 > /proc/bus/spi/cap11xx/cap11xx read register 0x03 = 0x00 |
Le but du script que j'écris c'est de récupérer la valeur (après le =) et de la comparer avec une valeur prédéfinie. Pour se faire j'utilise la commande cut pour récupérer juste les 0x00.
Sauf que si je l'applique dans le pipe de la commande, le résultat ne donne… rien :
1 2 | root@OpenWrt:/# echo read reg 0x03 > /proc/bus/spi/cap11xx/cap11xx | cut -d "=" -f 2 read register 0x03 = 0x00 |
Mais si j'applique "à la main" le cut sur le résultat, j'obtiens bien ce que je veux :
1 2 | root@OpenWrt:/# echo "read register 0x03 = 0x00" | cut -d "=" -f 2 0x00 |
Le problème vient du fait que j'écris dans le fichier cap11xx, et non dans le stdout, donc le "cut" qui est dans le pipe lui s'applique sur stdout… qui doit être vide. Sauf que le driver écrit bien une phrase de résultat…
Dans le script j'ai essayé pas mal de trucs trouvés sur le net mais rien n'y fait, je n'arrive pas à récupérer la phrase renvoyée par le driver.
Je lance donc cette bouteille dans la mer de fruit pour savoir déjà si c'est possible à réaliser.
Merci