複数のパス (フォルダー名) を持つスクリプトがあります。
各フォルダー パスには Dockerfile がありますが、そのファイルがどのレベルに存在するかは不明です。
私の道は「v1/エアフロー/1.86/src/コード/」
しかし、ファイルは例えば「v1/エアフロー/1.86/src/Dockerfile」または、「v1/エアフロー/1.86/Dockerfile」
だから私は一歩後退したりCD ../ そこにファイルが存在するかどうかを再帰的にチェックし、存在しない場合は 1 つ前のディレクトリに戻って再度確認し、存在する場合はそれ以上確認を中止します。
ご協力いただければ幸いです
答え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
これは上から下へチェックします。配列の順序を逆にするのはそれほど難しくありません。