我有一个 shell 脚本,可以 cd 到特定目录来运行一组 python 文件。现在我已经将其致力于源代码管理(脚本和 python 文件),我将其克隆到 Jenkins 工作空间中并希望从那里运行文件。该脚本当前仍被写入本地存储库而不是 Jenkins 工作空间,因此克隆存储库变得多余 如何编写 cd 命令,以便它识别 Jenkins 工作空间中存在的文件并从那里运行它而不是同一台机器上存在的本地文件
答案1
如果我理解正确的话,您希望您的test
目录位于与脚本相同的位置。
您可以获取脚本的位置(无论运行脚本时的当前目录如何),如下所示:
MYPATH=`dirname \`readlink -e "$0"\``
然后你可以这样做,例如
cd "$MYPATH/test"
解释:
$0
是脚本的名称(包括路径)。
readlink -e /foo/bar
为您提供 /foo/bar 的绝对位置(也解析出任何符号链接)。
dirname
修剪掉文件部分,只留下路径