ls "$ {VMX_DIR}" | grep -q delta> /dev /null 2> & 1;
Он перечисляет файлы в VMX_DIR и затем передает их в grep, но что он делает?
Он проверяет, есть ли файл или путь, содержащий delta
в ${VMX_DIR}
затем возвращает результат через код завершения grep, так как grep вернется с нормальным кодом выхода 0, если он найдет совпадение, и кодом ошибки 1 если это не так. Это полезно в условных выражениях bash.
Вот что делает заявка за заявлением:
ls "$ {VMX_DIR}"
Выводит список содержимого каталога, хранящегося по пути ${VMX_DIR}
| grep -q delta
Передайте результаты в grep, выполнив поиск в результатах списка каталогов для delta
игнорируя любой вывод в stout.
> /dev /null 2> & 1;
Перенаправляет стандартный вывод в /dev/null
чтобы он не печатался. 2>&1
говорит bash перенаправить stderr в stdout (который теперь собирается в /dev/null
). Точка с запятой просто завершает строку.
Со страницы руководства grep
:
-q, --quiet, --silent
Quiet; do not write anything to standard output. Exit immedi-
ately with zero status if any match is found, even if an error
was detected. Also see the -s or --no-messages option.
По сути, это проверяет, есть ли имя файла, содержащее delta
и возвращает true
если есть, или false
если его нет. Что он на самом деле делает с этим значением истины, так это чье-то предположение из того небольшого фрагмента, который у вас там есть.
Последняя часть перенаправляет стандартный вывод и стандартную ошибку в /dev/null - т. Е. Любой вывод команды grep (ошибки, предупреждения или совпадения) отбрасывается. Этот вид команды может быть полезен для простой проверки без вывода данных - $?
переменная будет нулевой или ненулевой в зависимости от того, был ли grep
или нет.
Вы можете упростить этот код, заменив > /dev/null 2>&1
на &>/dev/null
, что в этом случае сделает то же самое: перенаправьте все выходные потоки в /dev/null
.
Посмотрите I/O Redirection для деталей.
Кажется, что он предназначен просто для определения, есть ли слово «дельта» в списке, и в этом случае он вернет 0, в противном случае он вернет 1. Итак, основываясь на возвращаемом значении, вы знаете, была ли дельта или нет.