小智 27
你可以使用:
## __SCRIPTNAME - name of the script without the path
##
typeset -r __SCRIPTNAME="${0##*/}"
## __SCRIPTDIR - path of the script (as entered by the user!)
##
__SCRIPTDIR="${0%/*}"
## __REAL_SCRIPTDIR - path of the script (real path, maybe a link)
##
__REAL_SCRIPTDIR=$( cd -P -- "$(dirname -- "$(command -v -- "$0")")" && pwd -P )
Run Code Online (Sandbox Code Playgroud)
小智 9
好吧,我花了一段时间,但这一个是如此简单,它尖叫.
_SCRIPTDIR=$(cd $(dirname $0);echo $PWD)
Run Code Online (Sandbox Code Playgroud)
由于CD在带有$()的衍生shell中运行,因此它不会影响当前脚本.
小智 9
在korn shell中,如果你在相关脚本中采购,所有这些$ 0解决方案都会失败.得到你想要的正确方法是使用$ _
$ cat bar
echo dollar under is $_
echo dollar zero is $0
$ ./bar
dollar under is ./bar
dollar zero is ./bar
$ . ./bar
dollar under is bar
dollar zero is -ksh
Run Code Online (Sandbox Code Playgroud)
注意那里的最后一行?使用$ _.至少在Korn.YMMV in bash,csh,et al ..
如何调用脚本存储在变量$ 0中.您可以使用readlink获取绝对文件名:
readlink -f "$0"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40443 次 |
| 最近记录: |