Digamos que eu tenha várias variáveis em um script de shell (por exemplo, no zsh):
FOLDER_1, FOLDER_2, etc.
Essas variáveis se referem a pastas descendentes de /
. Por exemplo, se eu tiver um caminho/home/me/stuff/items
as variáveis seriam:
FOLDER_1='home'
FOLDER_2='me'
FOLDER_3='stuff'
Agora, diga que eu quero construir de volta o caminho correspondente concatenando as variáveis. Uma maneira possível é construir o caminho da seguinte maneira:
PATH=$FOLDER_1/$FOLDER_2/$FOLDER_3/
No entanto, diga que algumas das variáveis FOLDER_i
vêm com barras à direita, enquanto outras não (e não sabemos quais), por exemplo
FOLDER_1='home'
FOLDER_2='stuff/'
FOLDER_3='items'
Minha pergunta é: como eu poderia construir o caminho com robustez? (por exemplo, evitando barras duplas e adicionando-as onde elas precisam estar).
Eu pensei que uma maneira de fazer isso é adicionar /
sempre os pares de variáveis e excluir quaisquer duplicatas com sed
, mas não consigo fazê-lo funcionar (não tenho certeza se estou lidando /
corretamente com isso sed
).
Além disso, estou reinventando a roda ? (ou seja, já existe algum built-in que faça isso?).
Por fim, se as variáveis estiverem em uma matriz , por exemplo FOLDERS
, seria possível fazer isso sem fazer loop? (ou, alternativamente, fazendo um loop, mas sem saber quantas FOLDERS
existem na matriz).
%
método único funciona para a barra final mencionada na queston. Para atender quando há várias barras,${parts[@]%%/*}
funciona. Aqui está um link para um pouco mais de informação sobre o problema da barra: O que as barras duplas significam no caminho UNIX? É o 'cd dir / subdir // válido ...'