存在する 堅牢なルート構築、
提案されたソリューションは次のとおりです。
shopt -s extglob; dir="${dir//+(\/)//}"
誰かが私に説明(分析)できますか?私はそれが何をしているのか理解していますが、構文がどのように機能するのかわかりません。
ベストアンサー1
dir="${dir//+(\/)//}"
使用中${PARAMETER/PATTERN/STRING}
拡張。この場合を分析してみてください(Perlの正規表現修飾子を連想させる構文を使用して/x
、いいえ有効な Bash 構文):
${ # start expansion
dir # the parameter being expanded
/ # separates parameter from pattern
/ # double slash means replace all instead of replace first
+(\/) # the pattern we're looking for
/ # separates pattern from replacement
/ # the replacement text
} # end expansion
有効にした後extglob
、+(PATTERN)
PATTERN が複数回出現することを示します。パターンは\/
スラッシュと一致するため(バックスラッシュはパターンと代替テキストを区別するスラッシュではないことを示します)、+(\/)
1つ以上の/
文字が一致します。