Tengo una secuencia de comandos que tendría varias rutas (nombres de carpetas).
Cada ruta de carpeta tendría un Dockerfile, pero no está claro en qué nivel existiría ese archivo.
Digamos que mi camino es"v1/flujo de aire/1.86/src/código/"
Pero el archivo puede estar en Me gusta, por ejemplo."v1/flujo de aire/1.86/src/Dockerfile"o puede ser en"v1/flujo de aire/1.86/Dockerfile"
Así que estoy tratando de encontrar una manera de dar un paso atrás ocd ../ verifique recursivamente si el archivo existe allí; si no, retroceda un directorio y mire nuevamente y, si existe, deje de buscar más
Cualquier ayuda es apreciada
Respuesta1
Una solución rápida y sucia:
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
Esto se verifica de arriba hacia abajo. Invertir el orden de la matriz no debería ser demasiado difícil.