GNU/Linux >> Tutoriels Linux >  >> Linux

Si, sinon basé sur la commande redirigée vers grep

Le problème est que vous mettez tout dans [ , soit le test commande. De plus, votre utilisation de grep est cassé.

Tout ce dont vous avez besoin est :

if prlctl list --info ubuntu-vm | grep -q "State: running"; then
   echo 'machine is running'
else
   echo 'machine is not running'
fi

Notez l'utilisation de -q comme argument de grep . Il n'écrit rien dans STDOUT et se termine avec un statut de 0 si la correspondance est trouvée, et différent de zéro sinon.


Une vérification alternative, moins "propre" mais plus proche de ce que la question tentait d'atteindre.

N'oubliez pas que [ à sa base est juste une commande. Elle accepte toujours un nombre spécifique de paramètres et se termine avec l'état de sortie 0 (succès) ou 1 (échec), comme toutes les autres commandes. Par exemple, lorsque vous comparez deux chaînes, la syntaxe est [ , chaîne 1, == , chaîne 2, ] .

En ce moment, vous utilisez ceci comme if condition :

[ prlctl list --info ubuntu-vm | grep State == "State: running" ]

Mais il est ambigu à plusieurs égards. Comment [ savez-vous que sur la gauche vous avez une commande à exécuter et non une chaîne fixe ? Comment saurait-il que le == est l'opérateur de comparaison de chaînes, plutôt qu'un simple argument de grep ? Comment saurait-il que le | fait partie de la valeur de gauche, plutôt que de séparer la commande en [ prlctl list --info ubuntu-vm et grep State == "State: running" ] ?

Ainsi, le côté gauche doit également être cité. De plus, puisque vous voulez comparer la sortie de cette commande, plutôt que les mondes "prctl list --info..." eux-mêmes, vous avez besoin du $(…) opérateur :

[ "$(prlctl list --info ubuntu-vm | grep State)" == "State: running" ]

Linux
  1. Comment utiliser la commande Linux grep

  2. Utiliser la commande Grep et localiser ?

  3. Commande grep Linux

  4. Utilisez la commande Linux grep

  5. Option de couleur par défaut de Grep

Comment exclure dans la commande Grep sous Linux

Comment utiliser la commande grep sur Debian 10

Comment utiliser grep sous Linux

Commande Grep sous Linux (avec exemples)

Commande Grep sous Linux/UNIX

Utilisation de la commande grep sous Linux