KornShell(ksh)SegFault

时间:2010-02-05 13:27:53

标签: shell unix redirect segmentation-fault ksh

我发现以下脚本在AIX上的KornShell(ksh)中导致了分段错误和核心。任何人都可以解释为什么我得到以下结果?

  • Seg Fault

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

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

  • 无输出

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

  • 正确

    doOutput(){
      Echo "Something"
    }
    
    doOutput 
    

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

  • 2 个答案:

    答案 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以前不是开源的,但也许这已经改变了。