Mam nieznaną ścieżkę podaną przez użytkownika, w której chciałbym utworzyć plik. Ponieważ nie mam uprawnień do zapisu, muszę znaleźć pierwszy istniejący katalog na ścieżce przechodzącej od wewnątrz na zewnątrz i sprawdzić uprawnienia do zapisu.
Na przykład foo/moo/doo
próbowałem
for d in "$dirpath"/ ; do
"dir=$d"
done
Ale to nie działa
Muszę więc zapętlić ścieżkę, czy jest to absolutna, czy względna, sprawdzić każdy węzeł, czy istnieje i czy to rzeczywiście katalog, a jeśli tak, to zwróć go
lub jeśli nie wróci
- być może główny katalog, jeśli ścieżka jest bezwzględna (nie jestem pewien, czy w unixie zawsze jest konkretny katalog na szczycie ścieżki bezwzględnej)
- Bieżący katalog do ścieżki względnej
Wszelkie pomysły docenią twoją miłą pomoc
bash
terminal
shell-script
path
directory-listing
Jocky Doe
źródło
źródło
"dir=$d"
nie robi tego, czego oczekujesz. musisz podać tylko wartość, a nie całe zadanie.mkdir -p
.mkdir -p
zwraca „odmowa uprawnień”, załóżmy, że istnieje powód, dla którego uprawnienia są takie, a najlepszym, co może zrobić skrypt, jest zgłoszenie błędu; następnie prowadzisz dochodzenie ręcznie. Każda niewygodna logika skryptowa może przynieść odwrót.Odpowiedzi:
Po prostu szybkie rozwiązanie
źródło
Oto funkcja, która znajduje pierwszy istniejący katalog na ścieżce, zaczynając od najgłębszego miejsca na ścieżce.
Oto przykład użycia
źródło