У меня есть скрипт, который имеет несколько путей (имен папок).
Каждый путь к папке будет иметь Dockerfile, но неизвестно, на каком уровне будет существовать этот файл.
Допустим, мой путь —"v1/airflow/1.86/src/code/"
Но файл может быть на Like например"v1/airflow/1.86/src/Dockerfile"или это может быть в"v1/airflow/1.86/Dockerfile"
поэтому я пытаюсь найти способ сделать шаг назад илиCD ../ рекурсивно проверьте, существует ли файл, если нет, то вернитесь на один каталог назад и проверьте снова, и если есть, прекратите дальнейшие поиски.
Любая помощь приветствуется.
решение1
Быстрое и грубое решение:
dirs=$(echo v1/airflow/1.86/src/code/ | tr '/' ' ')
path=""
for element in ${dirs[@]}
do
if [[ -z "$path" ]]; then path=$element; else path="$path/$element"; fi
printf "%s\n" "$path"
[[ -e "${path}/Dockerfile" ]] && printf "Found it!\n"
done
Это проверка сверху вниз. Обратный порядок массива не должен быть слишком сложным.