@
ayanmw 又整理了一下:
```bash
getFileName(){
call=$(caller)
if test -z "$call";then
echo $0
return 0
fi
fname=$(echo $(caller)|cut -d ' ' -f 2-)
if test -f $fname;then
link=$(readlink $fname);
if test -z "$link";then
if test -f $fname;then
echo $(basename $fname);return 0;
fi
echo $fname;return 0;
fi
echo $(basename $(readlink $fname));
return 0
fi
echo $fname
}
echo fileName=$(getFileName)
```
函数可以在任意文件, 你只需要 `.
libFunc.sh` 或者 `source
libFunc.sh` 包含这个函数, 在任何地方调用
`echo fileName=$(getFileName)` 都可以获得 你当前所在的文件.
caller 这个 bash 内置方法, 终于解决了我多年的疑问了.