Сценарий, возвращающий нежелательный вывод

Esto es intencional; ver#778357:

The results are meaningful. 0 indicates success or transient error, whereas other values indicate a persistent error.

-4
23.11.2016, 16:29
2 ответа

Ваш сценарий сообщает, что имя не найдено, а затем сообщает, что имя существует. Это из-за вашего состояния , если [$? -ne 1] . Знак "$?" представляет код возврата последнего выражения в скрипте. В данном случае это код возврата предыдущего блока if.

Чтобы получить желаемый результат, переместите команду grep между первым и вторым блоками if. Таким образом, второе if будет оценивать результаты grep. Если grep найдет результат, он напечатает этот результат, и его код возврата будет 0, и блок будет пропущен. Если grep не находит результата, он ничего не должен печатать, а его код возврата будет 1, что приведет к выполнению условия.

0
28.01.2020, 05:20

Не все версии grep знают о -q Небольшой трюк, который я использую - когда меня интересует только статус команды, - это ставить перед командой префикс 'nohup' - потому что я ленив и забываю "способ перенаправления "

nohup way

nohup grep -i string_arg file_args >/dev/null
status=$?

способ перенаправления

grep -i string_arg file_args  2>&1 >/dev/null
status=$?
-2
28.01.2020, 05:20

Теги

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