Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析bash中的函数param并将其传递给新函数_Bash - Fatal编程技术网

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

解析bash中的函数param并将其传递给新函数,bash,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

我试图构建一个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
}
改变这个

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

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

echo "grep failed for [$2] in: [$RESULT]" 
无论如何,为了确保函数真正获得参数,您可以在脚本中添加调试,即:

echo "cmd[$cmd]"
echo "param1[$1]"
echo "param2[$2]"
问候
克劳迪奥

什么包含$dockerName?
echo "cmd[$cmd]"
echo "param1[$1]"
echo "param2[$2]"