i'm writing makefile have access path file running. mkfile_path.
mkfile_path= $(abspath $(lastword $(makefile_list)))
i want trim path, cutting off end last packages.
here examples:
- input:
/users/thomasreggi/desktop/monorepo/packages/event-as-promised/packages/node_modules/.bin/ied output:
/users/thomasreggi/desktop/monorepo/packages/event-as-promisedimput:
/users/thomasreggi/desktop/monorepo/packages/event-as-promised/node_modules/.bin/ied- output:
/users/thomasreggi/desktop/monorepo
how can manipulate path shell / make?
we can use parameter subsitution remove shortest matching part right end of string this:
$ 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} means remove $var shortest part of pattern matches end(from right) of $var.
to remove longest matching part can use ${var%%pattern}.
more info on parameter substitution can found here