获取bash文件所在的目录绝对路径以及获取函数方法名称
2017-12-14 20:20
627 查看
原网址链接:https://stackoverflow.com/questions/59895/getting-the-source-directory-of-a-bash-script-from-within
一个非常好用又简单的方法,不管是软连接还是硬链接都可以获取
${BASH_SOURCE[0]}可以获取文件目录,接着判断其是否为软连接,如果是的话,获取其绝对路径。
如果不是软连接目录,可以直接用以下方式来获取获取脚本的完整目录名称。
另外一个比较好用的变量FUNCNAME,是用于获取函数名称,注意,他是一个数组而非字符串,其中数组的第一个元素为当前函数的名称
输出结果:
一个非常好用又简单的方法,不管是软连接还是硬链接都可以获取
SOURCE="${BASH_SOURCE[0]}" while [ -h "$SOURCE" ]; do DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" SOURCE="$(readlink "$SOURCE")" [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" done DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
${BASH_SOURCE[0]}可以获取文件目录,接着判断其是否为软连接,如果是的话,获取其绝对路径。
如果不是软连接目录,可以直接用以下方式来获取获取脚本的完整目录名称。
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
另外一个比较好用的变量FUNCNAME,是用于获取函数名称,注意,他是一个数组而非字符串,其中数组的第一个元素为当前函数的名称
#!/bin/bash function test_func(){ echo "Current $FUNCNAME, \$FUNCNAME => (${FUNCNAME[@]})" another_func echo "Current $FUNCNAME, \$FUNCNAME => (${FUNCNAME[@]})"} function another_func(){ echo "Current $FUNCNAME, \$FUNCNAME => (${FUNCNAME[@]})"} echo "Out of function, \$FUNCNAME => (${FUNCNAME[@]})" test_func echo "Out of function, \$FUNCNAME => (${FUNCNAME[@]})"
输出结果:
Out of function, $FUNCNAME => () Current test_func, $FUNCNAME => (test_func main) Current another_func, $FUNCNAME => (another_func test_func main) Current test_func, $FUNCNAME => (test_func main) Out of function, $FUNCNAME => ()
相关文章推荐
- Shell中获取脚本所在目录绝对路径的方法
- 记录一下,根据文件路径获取到其所在目录的方法
- python获取文件所在目录和文件名,以及检索当前文件名的方法
- 批处理文件中获取当前所在路径的几种方法,以及写文件到txt
- C#路径中获取文件全路径、目录、扩展名、文件名称常用函数
- C#获取文件物理相对绝对路径目录的N种方法
- PHP获取当前文件所在目录的父目录的路径(两种方法)
- php中获取文件名,文件扩展名以及所在目录的方法
- QT QString根据路径获取文件名称以及所在文件夹等信息
- IOS获取各个文件目录路径的方法以及相关沙盒机制理解
- Linux下获取当前进程的执行文件的绝对路径和所在目录(通过/proc/self/exe链接)
- Shell中获取脚本所在目录绝对路径的方法
- node.js认识学习二:__dirname获取当前模块文件所在目录的完整绝对路径
- Shell中获取脚本所在目录绝对路径的方法
- C#路径中获取文件全路径、目录、扩展名、文件名称常用函数
- C#路径中获取文件全路径、目录、扩展名、文件名称常用函数
- jsp中获取当前服务器上所在目录的绝对路径
- android 获取路径目录方法以及判断目录是否存在,创建目录 (转)
- C# 根据包含文件的路径和文件的名称的字符串获取文件名称的几种方法
- Window下获取执行文件的目录的路径函数