Disons que j'ai plusieurs variables dans un script shell (par exemple dans zsh):
FOLDER_1, FOLDER_2, etc.
Ces variables font référence aux dossiers qui descendent /
. Par exemple, si j'ai un chemin/home/me/stuff/items
les variables seraient:
FOLDER_1='home'
FOLDER_2='me'
FOLDER_3='stuff'
Maintenant, disons que je veux reconstruire le chemin correspondant en concaténant les variables. Une façon possible consiste à créer le chemin comme suit:
PATH=$FOLDER_1/$FOLDER_2/$FOLDER_3/
Cependant, disons que certaines variables FOLDER_i
sont accompagnées de barres obliques de fin, tandis que d'autres ne le font pas (et nous ne savons pas lesquelles), par exemple
FOLDER_1='home'
FOLDER_2='stuff/'
FOLDER_3='items'
Ma question est: comment pourrais-je construire le chemin de manière robuste? (par exemple, éviter les doubles barres obliques et les ajouter là où elles doivent être).
J'ai pensé qu'une façon de le faire est d'ajouter le /
toujours entre des paires de variables, puis de supprimer tous les doublons avec sed
, mais je ne peux pas le faire fonctionner (je ne suis pas sûr de gérer /
correctement sed
).
Aussi, est -ce que je réinvente la roue ? (c.-à-d. y a-t-il une fonction intégrée qui le fait déjà?).
Enfin, si les variables sont dans un tableau , par exemple FOLDERS
, serait-il possible de le faire sans boucle? (ou alternativement, en boucle mais sans savoir combien FOLDERS
il y en a dans le tableau).
%
méthode unique fonctionne pour la barre oblique finale mentionnée dans le queston. Pour répondre lorsqu'il y a plusieurs barres obliques,${parts[@]%%/*}
fonctionne. Voici un lien vers un peu plus d'informations sur le problème des barres obliques: que signifient les doubles barres obliques dans le chemin UNIX? 'Cd dir / subdir // est-il valide ...