2016-02-16 2 views
0

Я пытаюсь построить функцию bash, которая принимает два аргумента и выполняет первый в контейнере докера, а затем выводит второй аргумент на выходе ... но я могу не получится.Параметр функции pars в bash и передать его новой функции

Это то, что я придумал до сих пор:

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' 

Любая помощь приветствуется!

EDIT:

Решение было не кладу вар в кавычки, например:

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

, что содержит $ dockerName? – ClaudioM

ответ

0

изменить это

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

с

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

тогда я предлагаю использовать эту синту х улучшить вывод на печать

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

Во всяком случае, просто чтобы убедиться, что функция действительно становится параметр, вы можете добавить отладки в сценарии именно:

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

С уважением Клаудио