=0 команда не найдена bash

=0 команда не найдена bash
grep "::=BEGIN" -q < /home/erawson/bin/HP/adaptec.mib
CHK= echo $?
if ($CHK = "0") ; then
echo "failed"
else    
     exit
fi

ошибка:

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

решение1

измените оператор if на if [ $CHK -eq 0 ]; then. Обратите внимание на пробелы между квадратными скобками.

Переменная CHK также должна быть назначена следующим образом CHK=$(echo $?).

Вот как должен выглядеть скрипт:

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

решение2

У вас там есть несколько ошибок синтаксиса, как уже было указано. Вы также, кажется, используете некорректную логику. Статус выхода означает, что 0команда выполнена успешно, а не то, что она не удалась. Если вы хотите напечатать, failedесли ваш файлне делаетсопоставьте строку запроса, все, что вам нужно, это:

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

Если вы хотите распечатать failedфайлМатчистроку, используйте это:

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

Нет необходимости сохранять статус выхода и нет необходимости в проверке if/else.

решение3

Насколько я понимаю, ваше требование заключается в том, что если вы получаете вывод для grepping строки "::=BEGIN", вы хотите вывести "failed".. верно?? И я не уверен, почему вы использовали ";" после if... снова использовали "then"

вы можете попробовать следующее


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

Надеюсь, это поможет!! (по моим предположениям)

решение4

Вам просто нужна дополнительная пара скобок:

grep -q "::=BEGIN" </home/erawson/bin/HP/adaptec.mib
if (("$?" = "0")); then
    echo "failed"
else
    exit
fi
  • Правильный синтаксис арифметического оператора:((

  • Кроме того, поскольку вы используете только код выхода $?, нет необходимости сохранять его в другой переменной, вы можете использовать его напрямую.

Это можно еще упростить следующим образом:

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

Связанный контент