GNU/Linux >> Tutoriales Linux >  >> Linux

¿Puede Grep devolver verdadero/falso o existen métodos alternativos?

Como parte de este script, necesito poder verificar si el primer argumento dado coincide con la primera palabra del archivo. Si es así, salga con un mensaje de error; si no es así, agregue los argumentos al archivo. Entiendo cómo escribir el if declaración, pero no cómo usar grep dentro de un guión. Entiendo que grep se verá algo como esto

grep ^$1 schemas.txt

Siento que esto debería ser mucho más fácil de lo que lo estoy haciendo.

Recibo un error "demasiados argumentos" en el if declaración. Me deshice del espacio entre grep -q y luego se esperaba un operador binario de error.

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

Respuesta aceptada:

grep devuelve un código de salida diferente si encontró algo (cero) frente a si no encontró nada (distinto de cero). En un if declaración, un código de salida cero se asigna a "verdadero" y un código de salida distinto de cero se asigna a falso. Además, grep tiene un -q argumento para no generar el texto coincidente (pero solo devolver el código de estado de salida)

Entonces, puedes usar grep así:

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

Como nota rápida, cuando hace algo como if [ -z "$var" ]… , resulta que [ es en realidad un comando que está ejecutando, como grep. En mi sistema, es /usr/bin/[ . (Bueno, técnicamente, su shell probablemente lo tenga incorporado, pero eso es una optimización. Se comporta como si fuera un comando). Funciona de la misma manera, [ devuelve un código de salida cero para verdadero, un código de salida distinto de cero para falso. (test es lo mismo que [ , excepto por el ] de cierre )


Linux
  1. ¿Qué son los códigos de salida de Bash en Linux?

  2. ¿Existen códigos de estado de salida estándar en Linux?

  3. valor devuelto de la secuencia de comandos de Python a la secuencia de comandos de Shell

  4. código de retorno grep de Linux

  5. ¿Puede GNU Grep generar un grupo seleccionado?

Linux:¿por qué son tan grandes los verdaderos y los falsos?

¿Hay alguna alternativa de código abierto al paisaje?

¿Puede exit() fallar al terminar el proceso?

¿Por qué salir del código 141 con grep -q?

¿Hay alguna manera de volcar la información de CPUID de una CPU?

¿Por qué verdadero y falso son tan grandes?