Domanda

Ho trovato il seguente script causa di un errore di segmentazione e core in KornShell (ksh) su AIX.Qualcuno può spiegare perché ottengo i seguenti risultati?

  • Seg Fault

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

    O

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

  • Nessun Output

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

  • Corretto

    doOutput(){
      Echo "Something"
    }
    
    doOutput 
    

    O

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

  • È stato utile?

    Soluzione

    Chiamate a funzioni di conchiglie come ksh non utilizzare le parentesi.Essi sono utilizzati solo durante la definizione di funzione.

    Corretto:

    doOutput(){
      Echo "Something"
    }
    
    doOutput
    

    Se si chiama una funzione con parametri, è possibile separarli utilizzando spazi (senza parentesi):

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

    Errato:

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

    Inoltre, perché sono reindirizzando stdout stdout (>&1)?

    Altri suggerimenti

    Hai trovato un bug in ksh, e solo loro autori, o qualcuno con accesso alla fonte, può spiegare a voi.Reale ksh non ha usato per essere open source, ma forse è cambiato.

    Autorizzato sotto: CC-BY-SA insieme a attribuzione
    Non affiliato a StackOverflow
    scroll top