这是一个shell脚本(.sh文件)。我需要基于当前目录创建一个绝对路径。我知道pwd
,但是如何将它与另一个字符串连接在一起?这是我要执行的操作的一个示例:
"$pwd/some/path"
听起来像您想要的:
path="$(pwd)/some/path"
将$(
打开一个子外壳(并)
关闭它),在该外壳中,内容作为脚本执行,因此所有输出都将放置在字符串中的该位置。
通常更有用的是获取正在运行的脚本的目录:
dot="$(cd "$(dirname "$0")"; pwd)"
path="$dot/some/path"
这更有用,因为无论您在哪里运行脚本,它都解析为相同的路径:
> pwd
~
> ./my_project/my_script.sh
~/my_project/some/path
而不是:
> pwd
~
> ./my_project/my_script.sh
~/some/path
> cd my_project
> pwd
~/my_project
> ./my_script.sh
~/my_project/some/path
更为复杂,但是如果通过符号链接执行了当前脚本的目录(例如,通过自制程序安装脚本时很常见),则需要运行该脚本,然后需要解析并遵循符号链接:
if [[ "$OSTYPE" == *darwin* ]]; then
READLINK_CMD='greadlink'
else
READLINK_CMD='readlink'
fi
dot="$(cd "$(dirname "$([ -L "$0" ] && $READLINK_CMD -f "$0" || echo "$0")")"; pwd)"
它需要更复杂和更有效的工作(例如,安装了与gnu兼容的readlink),所以我倾向于不使用它。仅在确定需要时,例如通过自制程序安装命令。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句