我正在调用一个脚本如下
目录路径:/user/local/script/print_path.sh
var_path=`pwd`
echo $var_path
Run Code Online (Sandbox Code Playgroud)
上面的脚本调用如下目录路径:/user/local/callPscript/call.sh
`/user/local/script/print_path.sh`
Run Code Online (Sandbox Code Playgroud)
我想要的输出如下:
/user/local/script/
Run Code Online (Sandbox Code Playgroud)
但它给出了输出:
/user/local/callPscript/
Run Code Online (Sandbox Code Playgroud)
即调用脚本的位置。如何使其进入脚本主目录路径?
经过几周的 Bash 编程,这已经成为标准解决方案:
directory=$(dirname -- $(readlink -fn -- "$0"))
Run Code Online (Sandbox Code Playgroud)
$0是脚本的相对路径,readlink -f将其解析为绝对路径,并dirname从路径末尾去除脚本文件名。
基于完全安全 find 的更安全变体:
directoryx="$(dirname -- $(readlink -fn -- "$0"; echo x))"
directory="${directoryx%x}"
Run Code Online (Sandbox Code Playgroud)
这对于任何文件名都应该是安全的 -$()结构删除字符串末尾的换行符,这就是x末尾的原因。
| 归档时间: |
|
| 查看次数: |
29926 次 |
| 最近记录: |