在bash中解析函数param并将其传递给新函数

时间:2016-02-16 08:31:41

标签: bash

我正在尝试构建一个带有两个参数的bash函数,并在docker容器中执行第一个参数,然后greps输出中的第二个参数。但是我无法使它工作。

这是我到目前为止所得到的:

function scriptCheckData() {
    local cmd=eval "$1"

    local RESULT=$(docker exec -i "$dockerName" cmd)

    if ! echo "$RESULT" | grep "$2"; then
        echo grep failed for "$2" in: "$RESULT"
        cleanupAndExit
    fi
}

函数调用:

scriptCheckData 'test.php --option 1' 'expected string'

任何帮助表示赞赏!

编辑:

解决方法是不将我的var放在引号中,如下所示:

function scriptCheckData() {
    local RESULT=$(docker exec -i "$dockerName" $1)

    if ! echo "$RESULT" | grep "$2"; then
        echo "grep failed for [$2] in: [$RESULT]"
        cleanupAndExit
    fi
}

1 个答案:

答案 0 :(得分:0)

更改此

local RESULT=$(docker exec -i "$dockerName" cmd)

local RESULT=$(docker exec -i "$dockerName" $cmd)

然后我建议使用这个sintax来改善输出打印

echo "grep failed for [$2] in: [$RESULT]" 

无论如何只是为了确保函数真正得到参数,你可以在你的脚本中添加一个调试,即:。

echo "cmd[$cmd]"
echo "param1[$1]"
echo "param2[$2]"

此致 克劳迪奥