次のスクリプトは、いくつかの(相対/絶対)パス(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が複数のスラッシュで終了できるようにするためにのみ必要です(これはおそらくナンセンスです)。拡張されたグロビングなしであなたはただ使うことができます:
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