我正在尝试构建一个带有两个参数的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
}
答案 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]"
此致 克劳迪奥