2016-09-21 137 views
0

我在嘗試將一些複雜命令作爲參數傳遞給函數時遇到了問題。將命令傳遞給函數

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

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

我嘗試了不同的引號,轉義字符,但我失去了一些東西。 提前謝謝!

+2

放棄希望:這是瘋狂的道路,(或者是對所有引用規則和角落案例的極端掌握。可以是全職工作)。 ;-)。祝你好運。 – shellter

回答

2

不要試圖在狀態函數中執行命令;只是調用下面的函數後,你打電話給你的命令:

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

例如:

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!。 (本質上,你試圖把你的命令放在你的函數的第一個位置參數$1中。)

+0

謝謝你的鏈接。它幫助我理解了一些事情。 –