将命令传递给函数

时间:2016-09-21 19:09:12

标签: bash function command arguments

当我尝试将一些复杂的命令作为参数传递给函数时,我遇到了麻烦。

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

executeCmd "ssh $USER@$IP "date && (ls | grep "something")""

我试过不同的语录,逃避字符,但我错过了一些东西。 提前谢谢!

1 个答案:

答案 0 :(得分:2)

不要尝试在状态函数中执行命令;只需在调用命令后调用以下函数

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

例如:

ssh $USER@$IP "date && (ls | grep \"something\")"; status

有关详细信息,请参阅I'm trying to put a command in a variable, but the complex cases always fail!。 (实际上,您试图将命令放在函数的第一个位置参数$1中。)