首页 > 解决方案 > Bash 删除变量中最后 2 个“/”符号之前的所有符号

问题描述

挣扎。请帮忙。

a="/var/www/test/some/page3.html"

我需要将其转换为

a="some/page3.html"

我正在努力

a=$(sed "s~/var/www/test/~~g" $a)

但得到 baaaad 结果。

标签: bashvariablessed

解决方案


Bash 参数解析
无需运行子进程。

$: a="/var/www/test/some/page3.html"
$: echo "${a%/*/*}"      # the part you want to get rid of
/var/www/test
$: echo "${a#${a%/*/*}}" # strip that
/some/page3.html

如果你也想摆脱那个前导斜线......

$: echo "${a#${a%/*/*}/}"
some/page3.html

推荐阅读