我正在尝试使用sed从变量中删除子字符串,如下所示:

PRINT_THIS="`echo "$fullpath" | sed 's/${rootpath}//' -`"

在哪里
fullpath="/media/some path/dir/helloworld/src"
rootpath=/media/some path/dir

我想像这样回显全路径的其余部分(我正在整个目录中使用它,因此我需要将其存储在变量中并自动执行
echo "helloworld/src"

使用变量将是
echo "Directory: $PRINT_THIS"

问题是,我无法删除子字符串,我在做什么错?谢谢

最佳答案

您不需要sed,仅bash就足够了:

$ fullpath="/media/some path/dir/helloworld/src"
$ rootpath="/media/some path/dir"
$ echo ${fullpath#${rootpath}}
/helloworld/src
$ echo ${fullpath#${rootpath}/}
helloworld/src
$ rootpath=unrelated
$ echo ${fullpath#${rootpath}/}
/media/some path/dir/helloworld/src

查阅String manipulation文档。

09-25 19:16