2016-09-21 4 views
0

Ich habe Probleme, während ich versuche, einige komplexe Befehle als Argumente an eine Funktion zu übergeben.Übergeben von Befehlen an eine Funktion

function executeCmd(){ 
    $1 
    returnVal=$? 
    if [[ $returnVal -eq 0 ]]; then 
     echo "Success" 
    else 
     echo "Failed" 
    fi 
} 

executeCmd "ssh [email protected]$IP "date && (ls | grep "something")"" 

Ich habe verschiedene Zitate versucht, Zeichen entkommen, aber ich vermisse etwas. Vielen Dank im Voraus!

+2

Verzicht Hoffnung: Dies ist der Weg zum Wahnsinn (oder hyper-extreme Beherrschung aller Zitate Regeln und Ecken Fällen. Es kann ein Vollzeitjob sein). ;-). Viel Glück. – shellter

Antwort

2

Versuchen Sie nicht, den Befehl innerhalb Ihrer Statusfunktion auszuführen; rufen Sie einfach die folgende Funktion nach Sie Ihren Befehl aufrufen:

status() { 
    if [[ $? == 0 ]]; then 
    echo "Success" 
    else 
    echo "Failure" 
    fi 
} 

Zum Beispiel:

ssh [email protected]$IP "date && (ls | grep \"something\")"; status 

I'm trying to put a command in a variable, but the complex cases always fail! für die Details. (Im Wesentlichen versuchen Sie, Ihren Befehl in den ersten Positionsparameter $1 Ihrer Funktion zu setzen.)

+0

Danke für den Link. Es hat mir geholfen, einige Dinge zu verstehen. –

Verwandte Themen