0

ファイルを読み取るスクリプト ksh を実行し、他のスクリプトを実行して MySQL データベースにアクセスしようとしています。しかし、2 番目のスクリプトは結果を返しません。誰かが理由を知っていますか?お願いします。

#!/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 に答える