Если вы должны использовать grep
, то я подозреваю, что проблема с вашей реализацией заключается в том, что вместо2>&1
(объединить стандартную ошибку и стандартный вывод )вы написали2>1&
(отправить стандартную ошибку в файл с именем 1
и поместите команду в фон оболочки ). Это предотвращает передачу состояния выхода grep
условному оператору.
FWIW вы можете использовать -q
для тихого выхода, и я не думаю, что вам вообще нужна подоболочка -вы можете просто написать
until grep -qE '^[a-zA-Z_]\w+' <<< "$fname"; do