2010-02-05 68 views
2

我发现以下脚本在AIX上导致KornShell(ksh)中出现分段故障和内核。任何人都可以解释为什么我会得到以下结果?KornShell(ksh)SegFault

  • 赛格故障

    doOutput(){ 
        Echo "Something" 
    } 
    
    doOutput() >&1 
    

    OR

    doOutput(){ 
        Echo "Something" 
    } 
    
    echo `doOutput()` 
    

  • 无输出

    doOutput(){ 
        Echo "Something" 
    } 
    
    doOutput() 
    

  • 正确

    doOutput(){ 
        Echo "Something" 
    } 
    
    doOutput 
    

    OR

    doOutput(){ 
        Echo "Something" 
    } 
    
    doOutput >&1 
    

  • 回答

    2

    调用shell等函数(如ksh)不要使用括号。它们仅在函数定义期间使用。

    正确:

    doOutput(){ 
        Echo "Something" 
    } 
    
    doOutput 
    

    如果调用带有参数的功能,您使用的空间(没有括号)将它们分开:

    doOutput(){ 
        Echo "$1 and then $2" 
    } 
    
    doOutput go stop 
    

    错误:

    doOutput(){ 
        Echo "Something" 
    } 
    
    doOutput() 
    

    加,w你是否重定向标准输出到标准输出(>&1)?

    +0

    因为我没有得到输出,我不知道为什么。谢谢,愚蠢的语法错误。 – 2010-02-05 16:35:54

    0

    你在ksh中发现了一个bug,只有它的作者或者有权访问源代码的人才能向你解释。真正的ksh并不是开源的,但也许这已经改变了。