我有一個具有多個路徑(資料夾名稱)的腳本。
每個資料夾路徑都會有一個 Dockerfile,但不確定該檔案會存在於哪個層級。
可以說我的道路是“v1/airflow/1.86/src/code/”
Bu 該檔案可以位於例如“v1/airflow/1.86/src/Dockerfile”或者它可以在“v1/airflow/1.86/Dockerfile”
所以我想找到一種方法讓我可以退後一步或者光碟 ../ 遞歸檢查該檔案是否存在,如果不存在則傳回目錄,然後再查看,如果存在,則停止進一步查找
任何幫助表示讚賞
答案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
這是從上到下進行檢查。反轉數組的順序應該不會太難。