Bir kabuk betiğinde (örneğin zsh) birkaç değişkenim olduğunu varsayalım:
FOLDER_1, FOLDER_2, etc.
Bu değişkenler, aşağı inen klasörleri ifade eder /. Örneğin, bir yolum varsa/home/me/stuff/items
değişkenler:
FOLDER_1='home'
FOLDER_2='me'
FOLDER_3='stuff'
Şimdi, değişkenleri birleştirerek karşılık gelen yolu yeniden oluşturmak istediğimi söyleyin. Olası bir yol, yolu aşağıdaki gibi oluşturmaktır:
PATH=$FOLDER_1/$FOLDER_2/$FOLDER_3/
Bununla birlikte, bazı değişkenlerin FOLDER_iileri eğik çizgilerle geldiğini, diğerleri ise (ve hangisini bilmediğimizi) varsayalım.
FOLDER_1='home'
FOLDER_2='stuff/'
FOLDER_3='items'
Sorum şu: Yolu nasıl sağlam bir şekilde oluşturabilirim? (örneğin çift eğik çizgileri kullanmaktan kaçınmak ve olması gereken yere eklemek).
Bunu yapmak için bir yolu /her zaman değişken çiftleri arasında eklemek ve daha sonra herhangi bir çoğaltmaları silmek olduğunu seddüşündüm, ama işe yarayamıyorum ( /doğru ele aldığım emin değilim sed).
Ayrıca, tekerleği yeniden mi keşfediyorum ? (yani bunu zaten yapan herhangi bir yerleşik var mı?).
Değişkenler bir in ise Finallly, dizinin , örneğin FOLDERS, döngü olmadan bunu yapmak mümkün olurdu? (veya alternatif olarak, döngüde ancak FOLDERSdizide kaç tane olduğunu bilmeden ).
%yöntem questonda belirtilen tek eğik çizgi için çalışır. Birden fazla eğik çizgi olduğunda${parts[@]%%/*}işe yarar . Eğik çizgi sorunu hakkında biraz daha bilgi için bir bağlantı: UNIX yolunda çift eğik çizgi ne anlama geliyor? 'Cd dir / subdir // geçerli mi ...