2013-09-02 6 views
0

Я пытаюсь выполнить скрипт test bash внутри функции в другом сценарии оболочки. Функция принимает параметр, который является скриптом test bash (команда echo), и затем проверяет статус выхода. Проблема здесь в том, что статус выхода принимается за первую строку вывода тестового скрипта.Первая строка вывода команды в скрипте bash, переопределяющем статус выхода

SCRIPT: single_run.sh

function sing_run() { 
    exec_script=$1 
    `$exec_script` 
    return_status=$? 

    if [[ `$return_status` = "0" ]]; then 
    echo "SUCCESS" 
    else 
    echo "FAILURE" 
    fi 

    } 

    sing_run "/bin/bash -x /home/mspprod/customers/adobe/prod/scripts/test_run.sh | tee -a /home/mspprod/customers/adobe/prod/logs/testing.log" 

SCRIPT: test_run.sh

#!/bin/bash 

echo "This is a test script" 

ОШИБКА СООБЩЕНИЕ:

bash -x single_run.sh 
+ sing_run '/bin/bash -x /home/mspprod/customers/adobe/prod/scripts/test_run.sh | tee 
-a /home/mspprod/customers/adobe/prod/logs/testing.log' 
+ exec_script='/bin/bash -x /home/mspprod/customers/adobe/prod/scripts/test_run.sh | 
tee -a /home/mspprod/customers/adobe/prod/logs/testing.log' 
++ /bin/bash -x /home/mspprod/customers/adobe/prod/scripts/test_run.sh '|' tee -a 
/home/mspprod/customers/adobe/prod/logs/testing.log 
+ echo 'This is a Test Script' 
+ This is a Test Script 
single_run.sh: line 5: This: command not found 
+ return_status='echo 127' 
++ echo 127 
+ [[ 127 = \0 ]] 
+ echo FAILURE 
FAILURE 

Как я могу получить правильный статус выхода, а не This как статус выхода?

ответ

0
function myfunc() 
{ 
    bash -x $1 | tee -a output.log 
} 

myfunc $1 

if [ $?=0 ] 
    then 
    echo "Success" 
else 
    echo "Failure" 
fi 

Это будет выполнять скрипт и проверить код возврата

+0

работал вне FUNC, но не внутри: #/bin/Баш функция sing_run() { 'Баш -x $ 1 | tee -a выход.log' если [[$? = 0]]; затем эхо "SUCCESS" еще эхо "FAILURE" фи } sing_run '/home/mspprod/customers/adobe/prod/scripts/test_run.sh' O: + sing_run/дом/mspprod/клиентов /adobe/prod/scripts/test_run.sh ++ bash -x /home/mspprod/customers/adobe/prod/scripts/test_run.sh + echo 'Это тестовый скрипт' ++ tee -a output. войти + это тест сценарий single_run.sh: строка 4: Это: команда не найдена + [[127 = 0]] + эхо FAILURE FAILUR – user2738809

+0

отредактировал код, используя функция сейчас. – user1502952

+0

Это работает отлично. Спасибо.. :) – user2738809

Смежные вопросы