Скажем, у меня есть несколько переменных в сценарии оболочки (например, в 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'
Мой вопрос: как я мог построить путь надежно? (например, избегая двойных слешей и добавляя их там, где они должны быть).
Я подумал, что один из способов сделать это - добавить /
всегда между парами переменных, а затем удалить любые дубликаты с помощью sed
, но я не могу заставить его работать (я не уверен, что я /
правильно обрабатываю sed
).
Кроме того, я изобретаю колесо ? (т. е. есть ли встроенный, который это уже делает?).
Наконец, если переменные находятся в массиве , например FOLDERS
, возможно ли сделать это без зацикливания? (или, альтернативно, циклично, но не зная, сколько FOLDERS
их в массиве).
%
метод работает для одиночной косой черты, упомянутой в квесте. Для обслуживания, когда есть несколько слэшей,${parts[@]%%/*}
работает. Вот ссылка на немного больше информации о проблеме косой черты: Что означают двойные косые черты в пути UNIX? Является ли 'cd dir / subdir // действует ...