в то время как grep несколько файлов, как я останавливаюсь после первого соответствия?

Нет. Для запуска тестов требуется SDK. Тем не менее, можно использовать слои, чтобы удалить эту зависимость из окончательного изображения. Например, если ваша конечная цель состояла в том, чтобы иметь только запущенное приложение, но вы хотели сначала собрать и протестировать его внутри контейнера, прежде чем запускать его, вы можете выполнить:

FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
# do your build, test, publish

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
# copy published files from build-env

В конце концов, ваше изображение будет ссылаться только на среду выполнения ASP.NET Core, а не на SDK. Следует отметить, однако, что это будет запускать ваши тесты при создании образа, а не при каждом запуске контейнера. Однако этого должно быть достаточно, поскольку, если тесты пройдены во время сборки, опубликованное приложение в окончательном образе будет работать. Там действительно нет необходимости проверять это снова и снова. Однако, если вы хотите получить изображение, полностью посвященное тестированию, вам нужно создать образ SDK.

11
задан bob 30 March 2009 в 23:02
поделиться

5 ответов

Передайте вывод по каналу grep к head -n 1; это вытянет (и перейдет), первая строка, и проигнорируйте остальных (т.е. уничтожьте исходный канал).

13
ответ дан 3 December 2019 в 04:53
поделиться
for pattern in $(< ~/patterns.txt); do
  echo "$pattern"
  for i in *.bz2; do
    bzgrep -i "$pattern" "$i" && break
  done
done

Можно хотеть добавить-H к grep для отображения filename:line, а не просто строки.

5
ответ дан 3 December 2019 в 04:53
поделиться

Можно хотеть использовать -q (--quiet иначе --silent) переключатель. Затем проверьте, чтобы видеть если команда, завершенная успешно или нет. Это ничего не производит и прекращает искать непосредственно после нахождения соответствия и просто возвращает успешность или неуспешность.

4
ответ дан 3 December 2019 в 04:53
поделиться

Вот пример:

for i in  ~/bin/*; do grep -m 1 lua $i /dev/null && break; done

Те же работы с bzgrep; после первого успешного соответствия Вы выходите из цикла.

Включая /dev/null получает Вас имя файла в случае, если у Вас есть своего рода динозавр grep, который не распознает -H опция.

1
ответ дан 3 December 2019 в 04:53
поделиться

Если вы используете подтверждение на http://betterthangrep.com/ , вы можете использовать флаг -1 именно по этой причине.

0
ответ дан 3 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: