2

我试图在这里捕获退出代码“0”。每当退出代码 0 被捕获时,就会在陷阱中调用检查函数,我正在尝试使用 command 重新启动硬件hascli -rn /,但每次都会跳过此命令的执行。

#!/bin/bash
source $TCE_COMMON
source commonFunctions.sh
trap "
     check
     " 0
checkRGservices
function check
{
 hascli -rn /
 %SLEEP 300
 %NODE none
 #!/bin/bash
 source $TCE_COMMON
 source commonFunctions.sh
 checkForCoreFiles
}

任何人都可以帮助我摆脱这种情况。

在此先感谢,马希。

4

1 回答 1

2

正如威廉已经假设的那样:

与编译器在启动之前扫描整个程序的 C 或 Java 语言相比,shell 以自上而下的方式解释。因此,为了能够使用您的函数check(),您必须在此之前定义它。错误消息check: command not found是此类问题的有力指标。解决方法:把check()的函数定义移到trap命令上面。

对陷阱命令的一般注意事项:如bobah所述,在陷阱命令中使用关键字(此处:)EXIT而不是数字(此处:) 。它使您的代码更具可读性并且更易于移植,因为并非所有 *NIX 变体都使用相同的数字(尽管 '0' 在这里是一个特例)。0

于 2012-04-16T13:02:54.463 回答