Unix KSH: возвращает только 1 за любую ошибку и 0 за успех

У меня есть сценарий оболочки Unix, в котором я дал два условия для ошибок и не ошибок, как показано ниже:

Скрипт: Test.sh

#!/bin/sh

error1=ERROR
error2=FAIL

CheckError1=`grep $error1 proshell.sh | wc -l`

CheckErro2=`grep $error2 proshell.sh | wc -l`

if [ $CheckError1 -ge 1 ] then
   exit 1

elif [ $CheckError2 -ge 1 ] then
   exit 1

else
   exit 0
fi

Примечание: проблема в том, что я не получаю всегда 1 за любые ошибки для выхода 1.

Как получить только 1 за любые ошибки?

1 ответ

Решение

Вы проверяете количество совпадающих строк, а не состояние выхода grep.

Вы хотите сделать это:

error1=ERROR
error2=FAIL
file-proshell.sh

if grep -q "$error1" "$file" || grep -q "$error2" "$file"; then
   exit 1
else
   exit 0
fi

grep -q подавляет вывод, но успешно завершает работу, если найдено совпадение

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