GNU/Linux >> Linux Esercitazione >  >> Linux

Grep può restituire vero/falso o esistono metodi alternativi?

Come parte di questo script, devo essere in grado di verificare se il primo argomento fornito corrisponde alla prima parola del file. In tal caso, esci con un messaggio di errore; in caso contrario, aggiungere gli argomenti al file. Ho capito come scrivere il if istruzione, ma non come usare grep all'interno di una sceneggiatura. Comprendo che grep assomiglierà a questo

grep ^$1 schemas.txt

Sento che dovrebbe essere molto più facile di come lo sto facendo.

Ricevo un errore "troppi argomenti" su if dichiarazione. Mi sono liberato dello spazio tra grep -q e quindi è previsto un errore dell'operatore binario.

if [ grep -q ^$1 schemas.txt ]
then
        echo "Schema already exists. Please try again"
        exit 1
else
        echo "[email protected]" >> schemas.txt
fi

Risposta accettata:

grep restituisce un codice di uscita diverso se ha trovato qualcosa (zero) rispetto a se non ha trovato nulla (diverso da zero). In un if , un codice di uscita zero viene mappato su "true" e un codice di uscita diverso da zero viene mappato su false. Inoltre, grep ha un -q argomento per non restituire il testo corrispondente (ma restituire solo il codice dello stato di uscita)

Quindi, puoi usare grep in questo modo:

if grep -q PATTERN file.txt; then
    echo found
else
    echo not found
fi

Come nota veloce, quando fai qualcosa come if [ -z "$var" ]… , si scopre che [ è in realtà un comando che stai eseguendo, proprio come grep. Sul mio sistema, è /usr/bin/[ . (Beh, tecnicamente, la tua shell probabilmente lo ha integrato, ma questa è un'ottimizzazione. Si comporta come se fosse un comando). Funziona allo stesso modo, [ restituisce un codice di uscita zero per true, un codice di uscita diverso da zero per false. (test è la stessa cosa di [ , fatta eccezione per il ] di chiusura )


Linux
  1. Cosa sono i codici di uscita Bash in Linux

  2. Esiste una funzione di sospensione alternativa in C in millisecondi?

  3. Come posso escludere le directory da grep -R?

  4. exit() può non riuscire a terminare il processo?

  5. Come posso sapere se netcat e dd funzionano?

Linux:perché vero e falso sono così grandi?

Esistono alternative open source al paesaggio?

GNU Grep può produrre un gruppo selezionato?

Esiste un'alternativa per JTS TestBuilder su Linux?

Esistono utilità della riga di comando in grado di acquisire le pressioni dei pulsanti del joystick?

Perché vero e falso sono così grandi?