2011-07-29 51 views
3

在KornShell(ksh)中,我有一个调用脚本列表的脚本。被调用者脚本需要知道它的文件名,以便它可以生成唯一的配置(或者任何应该是唯一的)。从另一个脚本调用时获取当前脚本名称

问题是变量$0总是指向调用者脚本。例如,我们有两个脚本:

caller.sh:

. callee.sh 

callee.sh:

echo $0 

当我执行caller.sh的callee.sh打印“caller.sh “,而不是”callee.sh“。那么如何获得当前运行脚本的脚本文件名?

该脚本在AIX服务器上运行,所以bash不可用。

回答

2

这是因为您正在采购callee.sh,即. callee.sh

所以,如果你只是执行callee.sh(你不需要那些在callee.sh设定在caller.sh活动环境变量)呼叫方scritpt改变

#!/bin/ksh 
callee.sh 

我讨厌这样说,但我认为ksh人会说'按设计工作'。

+0

我输入'callee.sh'的原因是我需要从'caller.sh'调用'callee.sh'中的函数。最后,我将文件名传递给'callee.sh',而不是从外部获取它。 – aquaop

0

以下命令在callee.sh脚本中为我工作。

echo $(basename ${BASH_SOURCE[0]}) 
相关问题