等待(在ksh中的N进程的结束和运行另一个进程后)无法正常工作 [英] Wait (the end of N process in ksh and after run another process) dont work correctly

查看:277
本文介绍了等待(在ksh中的N进程的结束和运行另一个进程后)无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的脚本是:

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

echoLancio 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:第27行:接近意外标记的语法错误`;'
./Start_lancio_unico_ELE_DMT_INFASAMENTO_FT.sh:第27行:`pmcmd startworkflow -sv $ SERVER -d $ DOMINIO -u $ USER -p $ PASSWD -f $ DIRECTORY_SEC_LEV_ELE $ WORKFLOW1& ;;'

为什么;是不正确的?



我想在后台运行3进程,完成后运行第3个进程。



感谢所有

解决方案

看起来这是一个bash错误,而不是一个ksh错误。您如何调用脚本?

  $ cat script.sh 
#!/ usr / bin / ksh
sleep 5& ;;
wait;
echo done
$ ksh script.sh
done
$ bash script.sh
script.sh:第2行:意外标记附近的语法错误`;'
script.sh:line 2:`sleep 5& ;;'

code>& 和; 是命令终止符,显然使用两者都是一个错误。参考文献: http://www.gnu.org/software/bash/manual /bashref.html#Lists


A 列表是一个序列由一个运算符';','&','&&'或'||'分隔的一个或多个管道,并且可选地由 strong> of';','&'或换行符。


b

my script is:

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

I have error:

./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 &;'

why ; is not correct?

i want run 3 process in background and after they are finished run a 3th process.

thanks to all

解决方案

It appears that's a bash error, not a ksh error. How are you invoking the script?

$ 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 &;'

In bash, both & and ; are command terminators, and it's apparently an error to use both. Ref: http://www.gnu.org/software/bash/manual/bashref.html#Lists

A list is a sequence of one or more pipelines separated by one of the operators ‘;’, ‘&’, ‘&&’, or ‘||’, and optionally terminated by one of ‘;’, ‘&’, or a newline.

(emphasis mine)

这篇关于等待(在ksh中的N进程的结束和运行另一个进程后)无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆