2013-10-25 260 views
0

我試圖執行一個腳本ksh,它讀取一個文件並執行其他腳本來訪問MySQL數據庫。但第二個腳本不返回任何結果。有誰知道爲什麼?請。在ksh shell腳本中運行腳本

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

的結果是:

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

但是,當我獨自執行行,我有正確的結果:

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

回答

2

在你的命令中的;被interpretted作爲文字分號,所以你基本上運行

/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