2014-09-05 102 views
-1

我想连续执行两条独立于前一条的失败或成功的命令,所以我知道||&&将不起作用。在这种情况下我能做什么?如果成功,我希望shell等待第一个命令完成;因此;也不起作用。Zsh独立于成功执行两行连续执行两条命令

编辑:我很抱歉,外壳是zsh,我运行一个shell脚本发送到不同的屏幕命令,如下图所示:

#! /bin/zsh 
### Script for running everything in screens ### 
### System argument screen name suffix ### 
echo You have the following screens running: 
screen -ls 
sigarr=(NM1 NM2 NM3 Scenario4 Scenario6) 
puarr=(50PU 140PU) 
lumarr=(30 300 3000) 
echo Please type 1 for 50PU samples and 2 for 140PU samples 
read PU 
if [[ $PU -ne 1 && $PU -ne 2 ]] ; then 
    echo You have to enter 1 or 2 
    return 1 
fi 

echo Please type 1 for 300fb-1 and 2 for 3000fb-1 
read lum 

if [[ $lum -ne 1 && $lum -ne 2 ]] ; then 
    echo You have to enter 1 or 2 
    return 1 
fi 

if [ $PU = 1 ]; then 
    let "lum = $lum + 1" 
    #echo $lum 
fi 

ex NEWrunReader.py <<EOEX 
    :43s/Lumi.*/Lumi=$lumarr[lum]/ 
    :x 
EOEX 

echo Compiling the reader file!!! 
root -l << EOF 
.L readerSummerStd.C+ 
EOF 

if [ $PU = 2]; then 
    let "lum = $lum + 1" 
fi 

echo Press any key to proceed or Ctrl+C to abort! 
read 


for sigind in $sigarr 
do 
    screen -dmS "${sigind}_${lumarr[lum]}_${puarr[PU]}_${1}" 
    sleep 0.1 
    screen -S "${sigind}_${lumarr[lum]}_${puarr[PU]}_${1}" -p 0 -X stuff "./NEWrunReader.py SummerStd $puarr[PU]_$sigind $1 >& "${sigind}_${lumarr[lum]}_${1}".txt &;exit"$'\r' 
done 
return 0 
+1

请解释。 ';'在执行第二个命令之前等待第一个命令。为什么这不起作用? – 2014-09-05 16:49:13

+2

';'分隔两个命令,它们依次运行 – bobah 2014-09-05 16:49:42

+0

确实,'''正是你想要的。 '&'不是。 – 2014-09-05 16:50:16

回答

0

使用|或者&而不是|| ||或& &

+0

如果失败也会退出吗? – Vesnog 2014-09-05 16:59:10

+0

@Vesnog - 不确定你在问什么? – dganesh2002 2014-09-05 17:01:16

+0

@Vesnog我刚刚看到你对这个问题的更新。是否你想同时运行两个屏幕? – dganesh2002 2014-09-05 17:13:29