2010-02-05 54 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並不是開源的,但也許這已經改變了。