在Java程序中使用Process或ProcessBuilder类来执行多条命令时,通常需要将多条命令通过命令分隔符拼接成一个字符串,然后作为exec方法的参数执行该命令。常用的命令间隔符有:;、&、&&、||。虽然它们都可以起到拼接多条命令的功能,但是使用的效果也是有区别的。
1、分号分隔符
格式:cmd1 ;cmd2;cmd3:不管前面命令执行成功没有,后面的命令继续执行。
表示连续执行多条命令,命令之间只有先后关系,不存在逻辑关系,不管前面的命令是否执行成功,后面的命令都会执行。
2、短路与分隔符
格式:cmd1 & cmd2 & cmd3:三个命令同时执行。
表示多条命令同时执行。
3、逻辑与分隔符
格式:cmd1 && cmd2 && cmd3:只有前面命令执行成功,后面命令才继续执行。
表示连续执行多条命令,只有前面的命令执行成成,后面的命令才会执行,如果前面的命令执行出错,后面的所有命令都不会执行。
4、逻辑或分隔符
格式:cmd1 || cmd2 || cmd3:只要有一条命令执行成功,就执行结束。
表示只要任意一条命令执行成功,那么其他命令就会被忽略,表示成功执行了整体的连续命令,情况如下:
1>如果第一条命令执行成功,那么后面的命令就不再执行。
2>如果第一条命令执行失败,那么后面的命令逐一执行,直到成功执行一个,退出,忽略之后的命令。
3>如果所有命令都执行失败,那么所有命令都重新执行一遍。