答え1
「Bashのみ」の答えではありませんが、役に立つかもしれません。
echo "$PWD///" | tr -s '/'
答え2
「pure bash」で使用できますが、extglob
有効になっている場合にのみ使用できます。
$ shopt -s extglob
$ A="////qsd/////sdfgfg//qsd//////"
$ echo ${A//\/+(\/)/\/}
/qsd/sdfgfg/qsd/
答え3
変数を使用して Bash のみを使用:
# code:
shopt -s extglob
A="$PWD//";
echo "Original: $A";
echo "Result: ${A//+(\/)//}"
# output:
Original: /home/myhome/Projects/Bob/build//
Result: /home/myhome/Projects/Bob/build/
//=検索と置換、検索と置換の継続
+(/) = 1 つ以上の「/」と一致
// = "/"に置き換えられました
より良い視覚的な例のために、スラッシュから抜け出さずにそれをよりよく見るためには、${VAR//pattern/string}で検索/置換しないように「z」を押す必要があるとします。基本構造は難読化されています。 :
# code:
shopt -s extglob
A=zzz/zzz/zzzzz/zzzz/zzzz;
echo $A;
echo ${A//+(z)/z}
# output:
zzz/zzz/zzzzz/zzzz/zzzz
z/z/z/z/z
答え4
修正する:人主(+1)正しいアイデアを得ました...私の答えは奇数の「/」にのみ適用されます。
もちろんいいえ設定するには「extglob」が必要です。
var="$PWD///"; var="${var//\/\//}" エコー "$var"