0

I am trying to execute a script ksh that reads a file and execute other script to access the MySQL database. But the second script doesn't return any result. Does anyone know why? please.

#!/bin/ksh

vet=($(cat lasts_tasks.txt))
echo ${vet[@]}

for workunit in ${vet[@]};
do
        echo "workunit:$workunit"
        exe="/var/www/boinc/m52cc/query_tasks.sh m52cc -workunitResult $workunit;"
        echo ""$exe
        result=`$exe`
        echo $result
done

The results are:

# ./lerArquivo.sh 
m52cc_job_5 m52cc_job_6 m52cc_job_7
workunit:m52cc_job_5
/var/www/boinc/m52cc/query_tasks.sh m52cc -workunitResult m52cc_job_5;

workunit:m52cc_job_6
/var/www/boinc/m52cc/query_tasks.sh m52cc -workunitResult m52cc_job_6;

workunit:m52cc_job_7
/var/www/boinc/m52cc/query_tasks.sh m52cc -workunitResult m52cc_job_7;

But when I execute the lines alone, I have the right result:

# /var/www/boinc/m52cc/query_tasks.sh m52cc -workunitResult m52cc_job_7;
105

1 Answer 1

2

The ; in your command is interpretted as a literal semicolon, so you're basically running

/var/www/boinc/m52cc/query_tasks.sh m52cc -workunitResult m52cc_job_6\; ;

Just remove the semicolon from your exe variable:

#!/bin/ksh

vet=($(cat lasts_tasks.txt))
echo ${vet[@]}

for workunit in ${vet[@]};
do
        echo "workunit:$workunit"
        exe="/var/www/boinc/m52cc/query_tasks.sh m52cc -workunitResult $workunit"
        echo ""$exe
        result=`$exe`
        echo $result
done
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.