web-dev-qa-db-fra.com

Si, d'autre en fonction de la commande de la commande à Grep

Je ne peux pas comprendre comment faire cela (quel est supposé être simple) script à travailler. Fondamentalement, ce que je veux, courir des choses différentes en fonction de l'état de mon VM Parallels, quelque chose comme ça:

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

Bien sûr que cela ne fonctionne pas

7
iLemming

Le problème est que vous mettez tout cela dans [, c'est-à-dire la commande test. De plus, votre usage de grep est cassé.

Tout ce dont tu as besoin c'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 à grep. Cela n'écrit rien à STDOUT et sort avec un statut de 0 si le match est trouvé et non-zéro autrement.

14
devnull