【问题标题】:Get Current Script Name While Was Calling from Another Script从另一个脚本调用时获取当前脚本名称
【发布时间】:2011-10-15 23:20:24
【问题描述】:

在 KornShell (ksh) 中,我有一个调用脚本列表的脚本。被调用脚本需要知道它的文件名,以便它可以生成唯一的配置(或者任何东西都应该是唯一的)。

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

caller.sh:

. callee.sh

callee.sh:

echo $0

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

脚本在 AIX 服务器上运行,因此 bash 并非一直可用。

【问题讨论】:

    标签: shell unix scripting sh ksh


    【解决方案1】:

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

    因此,如果您可以只执行 callee.sh(并且您不需要在 callee.sh 中设置的环境变量在 caller.sh 中处于活动状态),请将您的调用者脚本更改为

    #!/bin/ksh
    callee.sh
    

    我不想这么说,但我认为 ksh 人会说“按设计工作”。

    【讨论】:

    • 我获取callee.sh 的原因是我需要从caller.sh 调用callee.sh 中的函数。最后我将文件名传递给callee.sh,而不是从外部获取。
    【解决方案2】:

    callee.sh 脚本中的以下命令对我有用。

    echo $(basename ${BASH_SOURCE[0]})
    

    【讨论】:

      猜你喜欢
      • 2017-09-09
      • 2011-05-08
      • 2019-06-18
      • 1970-01-01
      • 2011-06-01
      • 2022-08-02
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      相关资源
      最近更新 更多