希望有人可以帮忙解决这个问题 - 不确定这是否是ksh93的已知错误?
#!/bin/ksh93
_errorCheck()
{
LINENO=$1
print "Error on or near line $LINENO - please check error log"
exit 1
}
trap '_errorCheck ${LINENO}' ERR
false
此输出:
Error on or near line 10 - please check error log
但是......如果使用单词function而不是()来定义函数:
#!/bin/ksh93
function _errorCheck
{
LINENO=$1
print "Error on or near line $LINENO - please check error log"
exit 1
}
trap '_errorCheck ${LINENO}' ERR
false
然后输出:
Error on or near line 10 - please check error log
Error on or near line 10 - please check error log
Error on or near line 10 - please check error log
Error on or near line 10 - please check error log
Error on or near line 10 - please check error log
Error on or near line 10 - please check error log
似乎无限次......
任何人都可以解释这种行为吗?
根据要求: KSH_VER =版本M-12/28 / 93e
答案 0 :(得分:1)
使用function f {...}
和f() {...}
实际上在ksh中是不同的。您可以检查该答案,这很好地说明了您正在尝试什么。
https://unix.stackexchange.com/questions/73750/difference-between-function-foo-and-foo
答案 1 :(得分:0)
您可以添加一行
trap - ERR
在任一函数的顶部,在第一次触发后重置陷阱。
对我来说,第二个功能显示了预期的行为。
无论如何,你进行了实验,发现了一些有用的东西。这一切都很重要。