여러 경로(폴더 이름)를 갖는 스크립트가 있습니다.
각 폴더 경로에는 Dockerfile이 있지만 해당 파일이 어느 수준에 존재할지는 확실하지 않습니다.
내 길은 다음과 같다고 하자"v1/airflow/1.86/src/code/"
하지만 파일은 예를 들어 좋아요에 있을 수 있습니다."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
위에서 아래로 확인하는 방법입니다. 배열의 순서를 바꾸는 것은 그리 어렵지 않습니다.