0

我正在尝试执行一个脚本 ksh 来读取文件并执行其他脚本来访问 MySQL 数据库。但是第二个脚本不返回任何结果。有谁知道为什么?请。

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

1 回答 1

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
于 2013-10-25T18:16:40.250 回答