2 votes

Comparer des chaînes de caractères dans Bash

Voici mon code (jusqu'à présent) :

var=$(sudo cat /dev/ttyUSB0)
echo "$var"

if [ "$var" == "OK" ]
    then
        echo "Everything is fine"
    else
        echo "Not OK"
fi

Comme la sortie de ce script est "OK", il devrait également écrire "Tout va bien", puisque le port série envoie "OK". Mais je n'obtiens que le message "Not OK", ce qui est étrange pour moi. Le premier écho dit "OK" mais si je veux comparer la chaîne, elle n'est plus "OK".

Quelqu'un peut-il m'aider (je suis un débutant sous linux) ?

1voto

A.B. Points 84870

La commande sudo cat /dev/ttyUSB0 ne renvoie aucun résultat. Utiliser stty au lieu de

sudo stty -F /dev/ttyUSB0

0voto

Ryan Points 21

Il est probable qu'il y ait des tabulations ou des espaces dans le texte. var . Tuyau cat résultat à tr pour les supprimer.

  var=$(sudo cat /dev/ttyUSB0| tr -d " \t\n")

0voto

dHjnMju Points 53

Cela fonctionne si vous supprimez les espaces blancs avec les commandes suivantes :

var="${var#"${var%%[![:space:]]*}"}"    
var="${var%"${var##*[![:space:]]}"}"

( https://stackoverflow.com/questions/369758/how-to-trim-whitespace-from-bash-variable ) Merci pour toutes les réponses

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X