=0 comando não encontrado bash

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

erro é:

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

Responder1

mude a instrução if para if [ $CHK -eq 0 ]; then. Observe os espaços entre colchetes.

A variável CHK também deve ser atribuída assim CHK=$(echo $?).

Aqui está o script como deve ser:

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

Responder2

Você tem alguns erros de sintaxe, como já foi apontado. Você também parece estar usando uma lógica falha. Um status de saída 0significa que o comando foi bem-sucedido, e não que falhou. Se o que você quer é imprimir failedseu arquivonãocorresponda à string de consulta, tudo que você precisa é:

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

Se você quiser imprimir failedse o arquivopartidasa string, use isto:

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

Não há necessidade de salvar o status de saída e nem de verificar if/else.

Responder3

Pelo que entendi, seu requisito é: se você obtiver a saída para a string grepping "::=BEGIN", deseja ecoar "failed"..right?? E não sei por que você usou ";" depois de if...novamente usado "então"

você pode tentar o seguinte


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

Espero que isto ajude!! (de acordo com minhas suposições)

Responder4

Você só precisa de um par extra de parênteses:

grep -q "::=BEGIN" </home/erawson/bin/HP/adaptec.mib
if (("$?" = "0")); then
    echo "failed"
else
    exit
fi
  • A sintaxe correta do operador aritmético é((

  • Além disso, como você está apenas usando o código de saída $?, não há necessidade de salvá-lo em outra variável, você pode usá-lo diretamente.

Isso pode ser ainda mais simplificado como:

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

informação relacionada