Чтобы перебрать каждый файл в текущем каталоге и сравнить их имена файлов с желаемым шаблоном, затем установите переменную, содержащую фрагменты даты
for f in *
do
[[ $f =~ ^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])(.*) ]] &&
yourvar="${BASH_REMATCH[1]}${BASH_REMATCH[2]}${BASH_REMATCH[3]}"
done
При этом используется способность bash [[
использовать сопоставление регулярных выражений для помещения фрагментов даты в массив BASH _REMATCH.
Я могу воспроизвести это с помощью этого Dockerfile:
FROM centos:latest
RUN yum -y install screen && rm -rf /var/cache/yum
CMD screen -S session1 sleep 99999
когда я запускаю его с помощью docker run <imageID>
, я получаюMust be connected to a terminal.
Для работы экрану требуется терминал (tty ). Решение состоит в том, чтобы добавить -tid
к флагам запуска, из справки:
-d, --detach Run container in background and print container ID
-i, --interactive Keep STDIN open even if not attached
-t, --tty Allocate a pseudo-TTY
Для справки см. https://docs.docker.com/engine/reference/run/.