Supponiamo che io abbia diverse variabili in uno script di shell (ad es. In zsh):
FOLDER_1, FOLDER_2, etc.
Queste variabili si riferiscono a cartelle discendenti da /
. Ad esempio, se ho un percorso/home/me/stuff/items
le variabili sarebbero:
FOLDER_1='home'
FOLDER_2='me'
FOLDER_3='stuff'
Ora, dì che voglio ricostruire il percorso corrispondente concatenando le variabili. Un modo possibile è costruire il percorso come segue:
PATH=$FOLDER_1/$FOLDER_2/$FOLDER_3/
Tuttavia, supponiamo che alcune delle variabili presentino FOLDER_i
barre rovesciate, mentre altre no (e non sappiamo quale) ad es
FOLDER_1='home'
FOLDER_2='stuff/'
FOLDER_3='items'
La mia domanda è: come potrei costruire il percorso in modo robusto? (ad esempio evitando doppi tagli e aggiungendoli dove devono essere).
Ho pensato che un modo per farlo fosse quello di aggiungere /
sempre le coppie di variabili e quindi eliminare tutti i duplicati sed
, ma non riesco a farlo funzionare (non sono sicuro che sto gestendo /
correttamente sed
).
Inoltre, sto reinventando la ruota ? (cioè c'è qualche built-in che lo fa già?).
In definitiva, se le variabili sono in un array , ad esempio FOLDERS
, sarebbe possibile farlo senza loop? (o in alternativa, eseguendo il loop ma senza sapere quanti FOLDERS
ce ne sono nell'array).
%
metodo singolo funziona per la singola barra finale menzionata nel queston. Per soddisfare quando ci sono più barre,${parts[@]%%/*}
funziona. Ecco un link a qualche informazione in più sul problema della barra: Cosa significano le doppie barre nel percorso UNIX? È 'cd dir / subdir // valido ...