我发现以下脚本在AIX上的KornShell(ksh)中导致了分段错误和核心。任何人都可以解释为什么我得到以下结果?
doOutput(){
Echo "Something"
}
doOutput() >&1
或
doOutput(){
Echo "Something"
}
echo `doOutput()`
doOutput(){
Echo "Something"
}
doOutput()
doOutput(){
Echo "Something"
}
doOutput
或 的
doOutput(){
Echo "Something"
}
doOutput >&1
答案 0 :(得分:2)
调用shell中的函数(如ksh)不使用括号。它们仅在函数定义期间使用。
<强>正确:强>
doOutput(){
Echo "Something"
}
doOutput
如果使用参数调用函数,则使用空格(无括号)将它们分开:
doOutput(){
Echo "$1 and then $2"
}
doOutput go stop
<强>不正确:强>
doOutput(){
Echo "Something"
}
doOutput()
另外,为什么要将stdout重定向到stdout(>&1
)?
答案 1 :(得分:0)
您在ksh中发现了一个错误,只有其作者或有权访问该来源的人才能向您解释。真正的ksh以前不是开源的,但也许这已经改变了。