脚本由于使用 ksh shell 的 AiX 服务器上的“exec”而挂起

脚本由于使用 ksh shell 的 AiX 服务器上的“exec”而挂起

下面的脚本在我的基础设施中的所有服务器上运行良好。

然而,我最近发现它无法完成执行,只是挂在带有kshshell 的 Aix 服务器上。

cat myscript.sh
export LOG="./test.log"
echo "Starting"
exec >$LOG 2>&1
echo "Completed"

下面是我运行这个脚本的方式

user1@myhost# . /app/myscript.sh
Output: Starting
<hangs here>

我希望这个脚本能够在 AiX、Solaris 和 Linux 等不同类型的操作系统上运行。

注意:此脚本是从我们用于自动化的远程服务器放置和执行的。当使用 ssh 远程执行以及在本地执行时,脚本会挂起,如上所示。

您能提出一个通用的解决方案吗?

答案1

您的.命令已将脚本内容逐字包含到当前 shell 会话中。其中一根线路重定向标准输出标准错误,因此这将应用于您当前的 shell。它没有挂起;它只是没有向你展示任何东西。

一般来说,.不是如何运行脚本。相反,使其可执行,#!在顶部添加一行来标识用于执行它的 shell,并将其调用为/app/myscript.sh(不带.命令)

相关内容