我有一个 SunOS 系统,这使这种情况变得复杂。
我有一些从不同路径运行的脚本(不可避免),并且系统有一个路径结构,路径中包含“系统环境”,然后我可以从路径中提取它。我有一个简单的脚本,它在之前调用或从其他所有脚本获取,以获取环境并设置其他几个公共变量。问题是,现在有 3 个不同的区域可能正在调用这个脚本,它没有正确地从路径中提取环境。
以下是可能存在的 3 条路径的简单示例:
- /dir1/dir2/${ENV}/bin/script1.ksh
- /dir1/dir2/${ENV}/services/service_name/script2.ksh
- /dir1/dir2/${ENV}/services/service_name/log/script3.ksh
我想要 1 个脚本,它能够获得 ${ENV},无论提供了哪一个路径,而不是我目前的 3 个单独的策略。
这是我目前获得第一个 ${ENV} 的方式:
#!/bin/ksh
export BASE_DIR=${0%/*/*}
export ENV=${BASE_DIR##*/}
第二个脚本:
#!/bin/ksh
export CURR_DIR=$( cd -- "$(dirname -- "$(command -v -- "$0")")" && pwd)
export BASE_DIR=${CURR_DIR%/*/*}
export ENV=${BASE_DIR##*/}
正如我所说,这是一个 SunOS 系统,所以它有一个旧的 KSH 受限版本。没有设置 -A 或替换。
关于限制我的脚本重复性的最佳策略的任何想法?
谢谢。