कहो कि मेरे पास एक शेल स्क्रिप्ट में कई चर हैं (जैसे 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 // वैध है ...