我正在尝试执行一个脚本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
答案 0 :(得分: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