В строке 1 команда в обратных кавычках отправляет свой стандартный вывод в цикл for ...
. Он ничего не выводит на экран, если не возникла ошибка одной из команд (например, ls
может пожаловаться на отсутствие пути к каталогу).
grep
в строке 3 действительно записывает в stdout . Возможно, вам нужен флаг -q
для тихого режима.
Я пытаюсь понять, что вы на самом деле пытаетесь сделать, потому что я думаю, что с этим, вероятно, можно справиться гораздо проще:
for item in atk/*
do
test -d "$item" && echo "${item/*\/}" | grep -Fvf atk/versions
done
Кстати, использование обратных кавычек для интерполяции команд больше не считается хорошим стилем кодирования. Лучше использовать конструкцию $ (...)
. Например, для версии в $ (ls ... awk)