解析bash中的函数param并将其传递给新函数
我试图构建一个bash函数,它接受两个参数,并在docker容器中执行第一个参数,然后在输出中greps第二个参数..但是我无法让它工作 这就是我到目前为止所说的:解析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
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]"