Risposte:
Sta controllando per vedere se c'è un file o percorso contenente delta nel ${VMX_DIR} quindi restituisce il risultato tramite il codice di uscita di grep poiché grep ritornerà con un normale codice di uscita di 0 se trova una corrispondenza e il codice di errore di 1 se non lo fa. È utile in condizioni basali.
Ecco cosa sta facendo dichiarazione per dichiarazione:
ls "$ {VMX_DIR}"
Elenca il contenuto della directory memorizzata nel percorso ${VMX_DIR}
| grep -q delta
Conduci i risultati a grep, cercando i risultati dell'elenco di directory delta ignorando qualsiasi uscita in stout.
& Gt; / dev / null 2 & gt; & amp; 1;
Reindirizza lo stdout a /dev/null quindi non verrà stampato Il 2>&1 dice a bash di reindirizzare stderr su stdout (che ora sta per /dev/null ). Il punto e virgola termina semplicemente la linea.
Dal grep pagina man:
-q, --quiet, --silent
Quiet; do not write anything to standard output. Exit immedi-
ately with zero status if any match is found, even if an error
was detected. Also see the -s or --no-messages option.
Fondamentalmente questo sta cercando di vedere se c'è un nome di file contenente delta e ritorno true se c'è o false se non c'è. Quello che sta effettivamente facendo con quel valore di verità è la supposizione di chiunque da quel piccolo frammento che hai lì.
L'ultima parte reindirizza uscita standard e errore standard a / Dev / null - I.e, qualsiasi output del comando grep (errori, avvisi o corrispondenze) viene eliminato. Questo tipo di comando può essere utile per fare un semplice controllo senza output - The $? la variabile sarà zero o diversa da zero a seconda che il grep riuscito o no.
Potresti semplificare questo codice sostituendo > /dev/null 2>&1 con &>/dev/null, che in questo caso farà la stessa cosa: reindirizza tutti i flussi di output a /dev/null.
Vedere Reindirizzamento I / O per dettagli.