我试图在这里捕获出口代码"0“。每当退出代码0被捕获时,就会在trap中调用check函数,在那里我试图使用命令hascli -rn /重新启动HW,但是每次都会跳过这个命令执行。
#!/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
}有人能帮我摆脱这一切吗。
提前谢谢你,马希。
发布于 2012-04-16 13:02:54
正如威廉已经假定的:
与C或Java等语言不同,编译器在程序启动前扫描整个程序,shell以自顶向下的方式解释。因此,为了能够使用函数check(),您必须在此之前定义它。错误消息check: command not found是解决这类问题的有力指示。解决方案:将check()的函数定义移到trap命令的上方。
陷阱命令的一个注意事项:正如bobah所述,在trap命令中使用关键字(这里:EXIT)而不是数字(这里:0)。它提高了代码的可读性和可移植性,因为并非所有*NIX变体都使用相同的数字(虽然'0‘是这里的特例)。
https://stackoverflow.com/questions/10139374
复制相似问题