Powiedzmy, że mam kilka zmiennych w skrypcie powłoki (np. W Zsh):
FOLDER_1, FOLDER_2, etc.
Te zmienne odnoszą się do folderów pochodzących z /
. Na przykład, jeśli mam ścieżkę/home/me/stuff/items
zmienne byłyby następujące:
FOLDER_1='home'
FOLDER_2='me'
FOLDER_3='stuff'
Teraz powiedz, że chcę zbudować z powrotem odpowiednią ścieżkę, łącząc zmienne. Jednym z możliwych sposobów jest zbudowanie ścieżki w następujący sposób:
PATH=$FOLDER_1/$FOLDER_2/$FOLDER_3/
Powiedzmy jednak, że niektóre zmienne FOLDER_i
mają ukośniki końcowe, podczas gdy inne nie (i nie wiemy, które) np
FOLDER_1='home'
FOLDER_2='stuff/'
FOLDER_3='items'
Moje pytanie brzmi: jak mogę solidnie zbudować ścieżkę? (np. unikanie podwójnych ukośników i dodawanie ich tam, gdzie powinny być).
Pomyślałem, że jednym ze sposobów jest dodanie /
zawsze między parami zmiennych, a następnie usunięcie wszelkich duplikatów za pomocą sed
, ale nie mogę sprawić, by działało (nie jestem pewien, czy /
poprawnie obsługuję sed
).
A także czy odkrywam koło ? (tj. czy jest już jakieś wbudowane narzędzie, które to robi?).
Na koniec, jeśli zmienne są w tablicy , np. FOLDERS
Czy byłoby to możliwe bez zapętlania? (lub alternatywnie, zapętlając, ale nie wiedząc, ile FOLDERS
ich jest w tablicy).
%
metoda działa dla pojedynczego ukośnika wymienionego w queston. Aby zaspokoić, gdy występuje wiele ukośników,${parts[@]%%/*}
działa. Oto link do nieco więcej informacji na temat ukośnika: Co oznaczają podwójne ukośniki w ścieżce UNIX? Czy 'cd dir / subdir // valid ...