GNU/Linux >> Linux Esercitazione >  >> Linux

If, else basato sul comando inviato a grep

Il problema è che stai inserendo tutto in [ , ovvero il test comando. Inoltre, il tuo utilizzo di grep è rotto.

Tutto ciò di cui hai bisogno è:

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

Nota l'uso di -q come argomento di grep . Non scrive nulla su STDOUT ed esce con uno stato 0 se viene trovata la corrispondenza e diverso da zero in caso contrario.


Un controllo alternativo, meno "pulito" ma più vicino a ciò che la domanda cercava di ottenere.

Ricorda che [ al suo centro c'è solo un comando. Accetta sempre un numero specifico di parametri ed esce con lo stato di uscita 0 (successo) o 1 (fallimento), come fanno tutti gli altri comandi. Ad esempio, quando confronti due stringhe, la sintassi è [ , stringa 1, == , stringa 2, ] .

In questo momento lo stai usando come if condizione:

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

Ma è ambiguo in diversi modi. Come sarebbe [ sai che a sinistra hai un comando da eseguire e non una stringa fissa? Come farebbe a sapere che il file == è l'operatore di confronto tra stringhe, piuttosto che un semplice argomento per grep ? Come farebbe a sapere che il file | fa parte del valore a sinistra, piuttosto che separare il comando in [ prlctl list --info ubuntu-vm e grep State == "State: running" ] ?

Quindi anche il lato sinistro deve essere quotato. Inoltre, dal momento che vuoi confrontare l'output di quel comando, piuttosto che i mondi "prctl list --info..." stessi, hai bisogno del $(…) operatore:

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

Linux
  1. Come usare il comando Linux grep

  2. In quale ordine vengono eseguiti i comandi convogliati?

  3. Utilizzare Command Grep e individuare?

  4. comando Linux grep

  5. Grep opzione di colore predefinita

Come escludere in Grep Command in Linux

Come usare il comando grep su Debian 10

Come usare grep in Linux

Comando Grep in Linux (con esempi)

Comando Grep in Linux/UNIX

Uso del comando grep in Linux