निम्न स्क्रिप्ट catenates कई (सापेक्ष/पूर्ण) पथ (BASEPATH) एक रिश्तेदार पथ (subdir) के साथ:
इस तरह के एक दो तार श्रृंखलाबद्ध एक पूर्ण पथ का निर्माण करने के रूप में के रूप में एक सरल है
shopt -s extglob
SUBDIR="subdir"
for BASEPATH in ''/base base/ base// /base /base/ /base//; do
echo "BASEPATH = \"$BASEPATH\" --> ${BASEPATH%%+(/)}${BASEPATH:+/}$SUBDIR"
done
जिनमें से उत्पादन होता है:
BASEPATH = "" --> subdir
BASEPATH = "/" --> /subdir
BASEPATH = "base" --> base/subdir
BASEPATH = "base/" --> base/subdir
BASEPATH = "base//" --> base/subdir
BASEPATH = "/base" --> /base/subdir
BASEPATH = "/base/" --> /base/subdir
BASEPATH = "/base//" --> /base/subdir
shopt -s extglob
BASEPATH कई स्लैश पर समाप्त करने के लिए (जो शायद बकवास है) की अनुमति के लिए केवल आवश्यक है। बिना globing बढ़ाया तुम सिर्फ उपयोग कर सकते हैं:
echo ${BASEPATH%%/}${BASEPATH:+/}$SUBDIR
जो कम साफ है लेकिन अभी भी काम करने में परिणाम होगा:
BASEPATH = "" --> subdir
BASEPATH = "/" --> /subdir
BASEPATH = "base" --> base/subdir
BASEPATH = "base/" --> base/subdir
BASEPATH = "base//" --> base//subdir
BASEPATH = "/base" --> /base/subdir
BASEPATH = "/base/" --> /base/subdir
BASEPATH = "/base//" --> /base//subdir
स्रोत
2017-01-03 22:34:14
क्या आप अब तक की कोशिश की? साथ ही, उपयोगकर्ता से इनपुट प्राप्त करने के बारे में आपके प्रश्न का हिस्सा है, और पथ बनाने के बारे में दूसरा हिस्सा? या सिर्फ रास्ता? – Levon
बस पथ बनाना। – Hakim