У меня есть скрипт bash, который передается как задание bash. Он создает несколько файлов, выполняет некоторые вычисления, перемещает выходные файлы куда-то еще и очищает. Для перемещения выходных файлов он содержит следующие строки:
set -e
mv $tmp/stdout.txt $current/tmp.stdout.txt
grep Report $current/tmp.stdout.txt >/dev/null 2>&1
mv $current/tmp.stdout.txt $current/stdout.txt
set +e
Если вычисление прошло успешно, выходной файл stdout.txt
содержит несколько строк, которые начинаются с Report
; но нет, если нет. Дальнейшая обработка проверяет, что файл $current/stdout.txt
существует (и повторно отправляет задание).
Первый mv
перемещает выходной файл из временного каталога в последний каталог с временным именем; а второй mv
переименовывает выходной файл в его окончательное имя. Но какова цель 1011 * между ними? Если выходной файл содержит строки с Report
, они перенаправляются на \dev\null
и ничего не происходит. Если выходной файл не содержит строк с Report
, он ничего не выводит ни в перенаправленный stdout
, ни в перенаправленный stderr
. Поэтому у меня сложилось впечатление, что эта строка ничего не делает, и я должен заменить mv
+ grep
+ mv
на один mv
. Какой функционал я здесь упускаю?