=0 comando no encontrado bash

=0 comando no encontrado bash
grep "::=BEGIN" -q < /home/erawson/bin/HP/adaptec.mib
CHK= echo $?
if ($CHK = "0") ; then
echo "failed"
else    
     exit
fi

error es:

/home/erawson/bin/try1: line 10: =: command not found

Respuesta1

cambie la declaración if a if [ $CHK -eq 0 ]; then. Observe los espacios entre llaves cuadradas.

La variable CHK también debe asignarse así CHK=$(echo $?).

Aquí está el script como debería verse:

#!/bin/bash
grep "::=BEGIN" -q < testfile1.txt    
CHK="$?"
if [ "$CHK" -eq 0 ] ; then
        echo "failed"
else
    exit
fi

Respuesta2

Tiene algunos errores de sintaxis, como ya se ha señalado. También pareces estar usando una lógica defectuosa. Un estado de salida 0significa que el comando se realizó correctamente, no que falló. Si lo que quieres es imprimir failedtu archivonocoincide con la cadena de consulta, todo lo que necesita es:

grep -q "::=BEGIN" /home/erawson/bin/HP/adaptec.mib || echo "failed"

Si desea imprimir failedel archivopartidosla cadena, usa esto:

grep -q "::=BEGIN" /home/erawson/bin/HP/adaptec.mib && echo "failed"

No es necesario guardar el estado de salida ni realizar una verificación if/else.

Respuesta3

Según tengo entendido, su requisito es que, si obtiene un resultado para la cadena grepping "::=BEGIN", desea repetir "fallido"... ¿verdad? Y no estoy seguro de por qué has usado ";" después si...nuevamente usado "entonces"

puedes probar lo siguiente


if [ -n `grep -q "::=BEGIN" /home/erawson/bin/HP/adaptec.mib` ]
then
        echo "failed"
else
        exit
fi

¡¡Espero que esto ayude!! (según mis suposiciones)

Respuesta4

Sólo necesitas un par de paréntesis extra:

grep -q "::=BEGIN" </home/erawson/bin/HP/adaptec.mib
if (("$?" = "0")); then
    echo "failed"
else
    exit
fi
  • La sintaxis correcta del operador aritmético es((

  • Además, como solo estás usando el código de salida $?, no es necesario guardarlo en otra variable, puedes usarlo directamente.

Esto se puede simplificar aún más como:

if grep -q "::=BEGIN" </home/erawson/bin/HP/adaptec.mib; then
    echo "failed"
else
    exit
fi

información relacionada