3

当代码

SRC=$(cd $(dirname "$0"); pwd)

在安装了 Git for Windows 的系统上的 Bash 脚本中执行c:\program files\Git,SRC 将获得该值/c/program

我该如何进行这项工作?我需要获取脚本所在的路径,并使用它来包含具有相对路径的其他脚本。在我的情况下,下一行是: source "${SRC}/common/common.sh"

该脚本已包含在内,c:\program files\Git\usr\bin因此我可以使用git <command-name>一些有用的手工命令来使用和扩展 Git,用于带有 rebase 和子模块的功能分支工作流。如果有人想提供帮助,
源代码位于https://github.com/jlovs/git-scripts 。

4

2 回答 2

3

您需要双引号cd命令的参数。

SRC=$(cd "$(dirname "$0")"; pwd)

命令替换$(dirname "$0")扩展为包含空格的路径。以下cd命令获取两个参数,而您只想传递一个,其中包含一个空格。

您无需担心$0另一对引号内的引号,因为$()命令替换会启动新的引用上下文

于 2017-12-13T08:00:41.677 回答
0

正如您所说,您在 MINGW64 下运行。您可以尝试使用cygpath -aw将路径转换为 ​​windows 格式:

SRC=$(cygpath -aw $(cd "$(dirname "$0")"; pwd))

更多信息在这里这里

于 2017-12-13T09:00:14.377 回答