Digamos que tengo varias variables en un script de shell (por ejemplo, en zsh):
FOLDER_1, FOLDER_2, etc.
Estas variables se refieren a carpetas que descienden de /
. Por ejemplo, si tengo un camino/home/me/stuff/items
las variables serían:
FOLDER_1='home'
FOLDER_2='me'
FOLDER_3='stuff'
Ahora, digamos que quiero reconstruir la ruta correspondiente concatenando las variables. Una forma posible es construir la ruta de la siguiente manera:
PATH=$FOLDER_1/$FOLDER_2/$FOLDER_3/
Sin embargo, digamos que algunas de las variables FOLDER_i
vienen con barras diagonales finales, mientras que otras no (y no sabemos cuáles), por ejemplo
FOLDER_1='home'
FOLDER_2='stuff/'
FOLDER_3='items'
Mi pregunta es: ¿cómo podría construir el camino de manera sólida? (por ejemplo, evitando barras dobles y agregándolas donde deben estar).
Pensé que una forma de hacerlo es agregar el /
siempre entre pares de variables y luego eliminar cualquier duplicado con sed
, pero no puedo hacer que funcione (no estoy seguro de estar manejando/
correctamente sed
).
También, estoy reinventando la rueda ? (es decir, ¿hay algún elemento integrado que ya lo haga?).
Finalmente, si las variables están en una matriz , por ejemplo FOLDERS
, ¿sería posible hacer esto sin bucle? (o, alternativamente, haciendo un bucle pero sin saber cuántos FOLDERS
hay en la matriz).
%
método único funciona para la barra inclinada final mencionada en el queston. Para atender cuando hay múltiples barras,${parts[@]%%/*}
funciona. Aquí hay un enlace a un poco más de información sobre el problema de la barra: ¿Qué significan las barras dobles en la ruta UNIX? Es 'cd dir / subdir // válido ...