如何在 bash 脚本中获取上一个目录?

How to get previous directory in bash script?

我现在正在编写 bash 脚本来获取我项目中的项目目录。以下是我的文件夹结构。当我进入 api 文件夹并键入 pwd 时,我会得到 "/Users/ppshein/Documents/projects/api" 但我想要的是我想从 api 文件夹中获取 "/Users/ppshein/Documents/projects/my-layers"

├── README.md
├── api
├── node_modules
├── package.json
├── report
├── serverless.yml
├── webpack.config.js
└── my-layers

我们可以在 bash 脚本中做些什么吗?

你可以这样获取父目录:

parent="$(dirname "$(pwd)")"

然后

"${parent}/my-layers"

有关如何获取父目录的详细信息,请参见Getting the parent of a directory in Bash

我比较喜欢用这个技巧

BASE_DIR=$(dirname $(readlink -m [=10=]))

这将获取包含带有变量 ${BASE_DIR} 的脚本的目录。通常,它是您项目的根目录,或者至少您可以找到可以使用的东西。 ../ 类似的东西。

好消息是它不使用像 pwd 这样可能与环境相关的命令。这样你就可以在任何你喜欢的地方执行你的脚本,这在 crontab 中特别有用。