修剪最新任意文件夹名称的路径

时间:2016-06-07 04:33:38

标签: shell makefile

我正在编写一个makefile,我可以访问该文件正在运行的路径。 MKFILE_PATH

MKFILE_PATH= $(abspath $(lastword $(MAKEFILE_LIST)))

我想修剪这条路径,将结尾切断到最后packages

以下是一些例子:

  • 输入:/Users/thomasreggi/Desktop/monorepo/packages/event-as-promised/packages/node_modules/.bin/ied
  • 输出:/Users/thomasreggi/Desktop/monorepo/packages/event-as-promised

  • 输入:/Users/thomasreggi/Desktop/monorepo/packages/event-as-promised/node_modules/.bin/ied

  • 输出:/Users/thomasreggi/Desktop/monorepo

如何使用shell / make操作路径?

1 个答案:

答案 0 :(得分:2)

我们可以使用参数替换从字符串的右端删除最短的匹配部分,如下所示:

$ var="/Users/thomasreggi/Desktop/monorepo/packages/event-as-promised/packages/node_modules/.bin/ied"
$ echo "${var%packages*}"
/Users/thomasreggi/Desktop/monorepo/packages/event-as-promised/
$ var="/Users/thomasreggi/Desktop/monorepo/packages/event-as-promised/node_modules/.bin/ied"
$ echo "${var%packages*}"
/Users/thomasreggi/Desktop/monorepo/

${var%Pattern}表示从$var中删除与$var的后端(右侧)匹配的Pattern的最短部分。

要删除最长的匹配部分,我们可以使用${var%%Pattern}

可以找到有关参数替换的更多信息here