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

Получил! Настройки клавиатуры> Макеты> Параметры ...> Использование клавиши пробела для ввода символа неизолированного пробела> Неразрывное пространство на третьем уровне, тонкое неразрывное пространство на четвертом уровне.

(Четвертый уровень называемый так же, как третий плюс Shift. Чтобы установить переключатель 3-го уровня, перейдите в Настройки клавиатуры> Макеты> Параметры ...> Ключ, чтобы выбрать 3-й уровень.)

1
задан 11 June 2015 в 14:47

3 ответа

У вас есть несколько ошибок sytax, как уже указывалось. Вы также, кажется, используете ошибочную логику. Статус выхода 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
ответ дан 23 May 2018 в 19:56

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

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


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

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

2
ответ дан 23 May 2018 в 19:56
  • 1
    Обратите внимание, что вам действительно не нужен -n, вы можете просто сделать if grep -q "::=BEGIN" file; then echo "failed"; else exit; fi. – terdon♦ 12 June 2015 в 00:36

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

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
2
ответ дан 23 May 2018 в 19:56
  • 1
    Назначение переменной должно быть CHK = $ (echo $?), Иначе это не будет присвоено – Sergiy Kolodyazhnyy 11 June 2015 в 14:50

Другие вопросы по тегам:

Похожие вопросы: