假设我在Shell脚本中有几个变量(例如在zsh中):
FOLDER_1, FOLDER_2, etc.
这些变量指的是从降序的文件夹/
。例如,如果我有一条路/home/me/stuff/items
变量将是:
FOLDER_1='home'
FOLDER_2='me'
FOLDER_3='stuff'
现在,说我想通过连接变量来构建相应的路径。一种可能的方法是按照以下方式构建路径:
PATH=$FOLDER_1/$FOLDER_2/$FOLDER_3/
但是,说一些变量FOLDER_i
带有尾随的正斜杠,而另一些则不是(我们也不知道哪个),例如
FOLDER_1='home'
FOLDER_2='stuff/'
FOLDER_3='items'
我的问题是:我该如何稳健地构建路径?(例如,避免双斜杠,并在需要的地方添加它们)。
我认为这样做的一种方法是/
在变量对之间添加Always,然后使用删除所有重复项sed
,但是我无法使其正常工作(我不确定我在中/
正确处理了sed
)。
另外,我是否正在重新发明轮子?(即是否已经有内置的功能?)。
最后,如果变量位于数组中,例如FOLDERS
,是否可以不循环而进行此操作?(或替代地,通过循环但不知道FOLDERS
数组中有多少个)。
%
方法适用于问题中提到的单个尾部斜杠。为了满足多个斜杠的需要,${parts[@]%%/*}
可以使用。这里是指向更多有关斜杠问题的信息的链接:双重斜杠在UNIX路径中意味着什么?'cd dir / subdir //有效吗?