【发布时间】:2018-08-17 23:47:13
【问题描述】:
我有如下的 ksh 脚本。
if [ `uname` == "AIX" ]; then
export LIBPATH_BKP_$$=$LIBPATH
# Trap so that it will return the original library path when script exits
trap 1 2 3 9 15 "export LIBPATH=$LIBPATH_BKP_$$; unset LIBPATH_BKP_$$"
export LIBPATH=/usr/mqm/lib:$LIBPATH
else # All else will be either Linux or Solaris which uses LD_LIBRARY_PATH
export LD_LIBRARY_PATH_BKP_$$=$LD_LIBRARY_PATH
# Trap so that it will return the original library path when script exits
trap 1 2 3 9 15 "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH_BKP_$$; unset LD_LIBRARY_PATH_BKP_$$"
export LD_LIBRARY_PATH=/usr/mqm/lib:$LD_LIBRARY_PATH_BKP_$$
fi
当我执行它时它说
tdestop.ksh[52]:陷阱:导出 LD_LIBRARY_PATH=49648;未设置 LD_LIBRARY_PATH_BKP_49648:错误陷阱
tdestop.ksh- 是脚本名称及其在第 52 行的错误提示。
问题是什么是坏陷阱?这里出了什么问题?我不是这方面的专家。对不起,如果这个问题真的很新手。
谢谢, 德维加
【问题讨论】:
-
所以这只发生在 Linux(非 AIX)环境中?祝你好运。
-
您在shellcheck.net 上查看了吗?确保在脚本顶部包含 #!/bin/ksh(93?)。并且您是否确认此错误仅发生在您发布的小代码示例中?祝你好运。
-
您不必担心重置环境变量,因为它们是您脚本的本地变量。
-
感谢@shellter 的洞察力。该脚本由另一个团队拥有,并且脚本很长。我只粘贴了错误提示部分。我无权访问任何 AIX 环境,因此如果它也发生在 AIX 中,我也无法遵守。感谢您的评论。
-
@LorinczyZsigmond - 这个脚本归另一个团队所有。我无权改变它的设计方式。感谢您的输入。当我编写自己的脚本时,我应该考虑到这一点。感谢您的回复。