Для вывода списка скрытых файлов и каталогов в текущем каталоге, включая. и ..:
echo .*
Чтобы рекурсивно перечислить скрытые файлы и каталоги в текущем каталоге и его подкаталогах:
find . -name '.*'
Если вы хотите сохранить результаты в файл, используйте перенаправление:
find . -name '.*' >output-file.txt
Ваш скрипт использует значение $rc1
в качестве имени файла, но это результат grep
.
Чтобы подать выход первого grep
в другой grep
, используйте трубу:
grep -v... filename | grep...
Вместо сохранения результата grep
в переменных (, которые предположительно могут быть довольно большими ), пусть тест if
воздействует непосредственно на результат запуска этого конвейера:
if grep -v -F 'Msg 2714' "$Logfilename" | grep -q -F Msg; then
echo 'Error message, some query has failed' >&2
exit 1
fi
При этом используется статус выхода конвейера (, который будет статусом выхода grep -q
), чтобы определить, должен ли сценарий выводить сообщение об ошибке и завершать работу. Нет необходимости хранить данные в переменных.
grep -q
ничего не выведет, но успешно завершится, если заданный шаблон совпадает. Я также использовал -F
с обоими вызовами grep
, так как мы сопоставляем строки, а не регулярные выражения.
Я также следую общему правилу, что сообщения об ошибках генерируются в стандартном потоке ошибок (с echo... >&2
в данном случае )и что скрипт завершится с не-нулевым статусом выхода после фатальная ошибка.
Также, возможно, имеет отношение к тому, что вы не -цитируете расширения переменных: