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
подавляет вывод, но успешно завершает работу, если найдено совпадение