首先了解下背景知识。
命令生效顺序
Linux系统下命令生效的顺序有以下4条:
-
绝对路径或相对执行的命令;
-
别名;
-
Bash的内部命令;
-
按照$PATH环境变量定义的目录查找顺序搜到的第一个命令。
实际shell脚本编写过程中,总会有这么一个场景,
#!/bin/bash file=command1 command2 $file
下一条命令command2执行所需要的参数或者需要涉及的文件,是由上一条命令command1执行的结果产生的。
而command执行需要的时间可能要1分钟,但是个人实践之后认为shell脚本中的命令都是顺序执行的
这时候就需要我们等待着command1执行完在执行command2。
-
1 &&
shell1 && shell2 && shell3
-
2 若有for循环 在循环体之后使用wait sleep
#!/bin/bash source ~/.bashrc fun(){ echo "fun is begin.timeNum:$timeNum" local timeNum=$1 sleep $timeNum & wait #这个只等待wait前面sleep echo "fun is end.timeNum:$timeNum" }
-
3
#!/bin/sh command 1 output=`command 2` command 3
-
4
#!/bin/bash for ((i=0;i<5;i++)) do sleep 3;echo a done #运行需要15秒。 #!/bin/bash for ((i=0;i<5;i++)) do { sleep 3;echo a } & done wait #打开5个子进程并行,运行只需要3秒。