2013-10-25 3 views
0

파일을 읽고 다른 스크립트를 실행하여 MySQL 데이터베이스에 액세스하는 스크립트 ksh를 실행하려고합니다. 그러나 두 번째 스크립트는 결과를 반환하지 않습니다. 아무도 이유를 아나요? 부디.ksh 쉘 스크립트 내에서 스크립트 실행

# ./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; 

하지만 혼자 선을 실행할 때, 나는 올바른 결과가 있습니다 :

#!/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 

결과는

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

답변

2

명령의 ; 리터럴 세미콜론으로 해석된다됩니다 따라서 기본적으로 실행 중입니다.

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

exe 변수에서 세미콜론을 제거하면됩니다.

#!/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