2012-12-07 105 views
0

执行这些bash命令的顺序是? 第四行可能在第一行或第二行结束之前开始?bash脚本中的执行顺序

find $LOCAL_TMP -type f -exec grep -l 'operationType="ACTIVATION"' {} ';' | xargs grep -l 'serviceCode="ACC-FTTS' | xargs -ICrTopoIpnatif mmv CrTopoIpnatif $LOCAL_TOPO 

find $LOCAL_TMP -type f -exec grep -l 'operationType="DEACTIVATION"' {} ';' | xargs grep -l 'serviceCode="ACC-FTTS' | xargs -ICrTopoIpnatif mmv CrTopoIpnatif $LOCAL_TOPO 

echo "mmv $LOCAL_TMP/**/*.xml $REP_LOCAL" >> $LOGFILE 
mmv "$LOCAL_TMP/**/*.xml" "$REP_LOCAL" >> $LOGFILE 

我问,因为我发现在$ REP_LOCAL文件(这是另一个脚本库目录,并将文件显示在脚本的日志),而不是在$ LOCAL_TOPO(在脚本的日志什么这里)。

+0

“$ LOCAL_TMP”或“$ LOCAL_TOPO”中是否有'&'字符? – twalberg

回答

2

它是顺序的。一切都按顺序发生。如果你用下面的头

#!/bin/bash -x 

运行该脚本,然后你会看到每个命令在执行。

1

只要您在前台执行所有命令,就会按您在脚本中指定的顺序执行命令。

command1 
command2 
command3 

被一个接一个执行。

这里

command1 & 
command2 
command3 

命令2和命令3 威力结束命令1之前,在command1需要更多的时间比其他两个来完成。这是因为command1和command2以及后来的command3并行运行,而在第一个示例中,所有命令按顺序在前台运行。