等待(在ksh中结束N进程并在运行另一个进程后)无法正常工作

时间:2014-04-16 15:05:31

标签: unix command-line ksh

我的脚本是:

#!/bin/ksh

WORKFLOW1=wf_m_LOAD_ODS_DMT_FATTO_E_BSN_LETTURE_F
WORKFLOW2=wf_m_LOAD_ODS_DMT_FATTO_E_ANAGRAFICA_POD_F
WORKFLOW3=wf_m_LOAD_ODS_DMT_FATTI_E_QF_F
pmcmd startworkflow -sv $SERVER -d $DOMINIO -u $USER -p $PASSWD -f $DIRECTORY_SEC_LEV_ELE $WORKFLOW1 & pmcmd startworkflow -sv $SERVER -d $DOMINIO -u $USER -p $PASSWD -f $DIRECTORY_SEC_LEV_ELE $WORKFLOW2 & pmcmd startworkflow -sv $SERVER -d $DOMINIO -u $USER -p $PASSWD -f $DIRECTORY_SEC_LEV_ELE $WORKFLOW3 &;
wait;

echo "Lancio creazione indici T_DMT_SEE_FT_BSN_LETTURE">>log_DMT_R1.log
sqlplus $USERDBDMT/$PASSDBDMT@$SIDDB @create_index_T_DMT_SEE_FT_BSN_LETTURE.sql &

我有错误:

./Start_lancio_unico_ELE_DMT_INFASAMENTO_FT.sh: line 27: syntax error near unexpected token `;'
./Start_lancio_unico_ELE_DMT_INFASAMENTO_FT.sh: line 27: `pmcmd startworkflow -sv $SERVER -d $DOMINIO -u $USER -p $PASSWD -f $DIRECTORY_SEC_LEV_ELE $WORKFLOW1 &;'

为什么;不正确吗?

我希望在后台运行3个流程,在完成后运行第3个流程。

感谢所有

1 个答案:

答案 0 :(得分:2)

看起来是bash错误,而不是ksh错误。你是如何调用脚本的?

$ cat script.sh
#!/usr/bin/ksh
sleep 5 &;
wait; 
echo done
$ ksh script.sh
done
$ bash script.sh
script.sh: line 2: syntax error near unexpected token `;'
script.sh: line 2: `sleep 5 &;'

在bash中,&;都是命令终止符,使用它们显然是错误的。参考:http://www.gnu.org/software/bash/manual/bashref.html#Lists

  

list是一个或多个管道的序列,由一个的运算符分隔;','&','&&'或'|| ',并且可选地由一个的';','&'或换行符终止。

(强调我的)