Lo script che segue catenates diversi percorsi (relativo/assoluto) (BasePath) con un percorso relativo (SUBDIR):
shopt -s extglob
SUBDIR="subdir"
for BASEPATH in ''/base base/ base// /base /base/ /base//; do
echo "BASEPATH = \"$BASEPATH\" --> ${BASEPATH%%+(/)}${BASEPATH:+/}$SUBDIR"
done
la cui uscita è:
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
Il shopt -s extglob
è necessario solo per consentire a BASEPATH di terminare con più barre (che probabilmente non ha senso). Senza esteso le wildcard si può semplicemente utilizzare:
echo ${BASEPATH%%/}${BASEPATH:+/}$SUBDIR
che si tradurrebbe in meno ordinata, ma ancora lavorando:
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
fonte
2017-01-03 22:34:14
Cosa hai provato finora? Inoltre, fa parte della tua domanda su come ottenere input dall'utente, e l'altra parte sulla costruzione del percorso? O solo il percorso? – Levon
Basta creare il percorso. – Hakim