GNU/Linux >> Tutoriales Linux >  >> Linux

Si, de lo contrario, basado en el comando canalizado a grep

El problema es que lo estás poniendo todo dentro de [ , es decir, el test dominio. Además, su uso de grep está roto.

Todo lo que necesitas es:

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

Tenga en cuenta el uso de -q como argumento para grep . No escribe nada en STDOUT y sale con un estado de 0 si se encuentra la coincidencia y distinto de cero en caso contrario.


Una verificación alternativa, menos "limpia" pero más cercana a lo que la pregunta intentaba lograr.

Recuerda que [ en esencia es solo un comando. Siempre acepta un número específico de parámetros y sale con el estado de salida 0 (éxito) o 1 (fallo), como lo hacen todos los demás comandos. Por ejemplo, cuando compara dos cadenas, la sintaxis es [ , cadena 1, == , cadena 2, ] .

En este momento estás usando esto como el if condición:

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

Pero es ambiguo en varios sentidos. ¿Cómo sería [ ¿Sabe que a la izquierda tiene un comando para ejecutar y no una cadena fija? ¿Cómo sabría que el == es el operador de comparación de cadenas, en lugar de solo un argumento para grep ? ¿Cómo sabría que el | es parte del valor de la izquierda, en lugar de separar el comando en [ prlctl list --info ubuntu-vm y grep State == "State: running" ] ?

Por lo tanto, el lado izquierdo también debe citarse. Además, dado que desea comparar la salida de ese comando, en lugar de los mundos "prctl list --info..." en sí mismos, necesita el $(…) operador:

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

Linux
  1. Cómo usar el comando grep de Linux

  2. ¿En qué orden se ejecutan los comandos canalizados?

  3. ¿Usar el comando Grep y localizar?

  4. Comando grep de Linux

  5. Opción de color por defecto de Grep

Cómo excluir en el comando Grep en Linux

Cómo usar el comando grep en Debian 10

Cómo usar grep en Linux

Comando Grep en Linux (con ejemplos)

Comando Grep en Linux/UNIX

Uso del comando grep en Linux