在Unix中分离常规命令是将分号放在最后,如下所示:
cd /path/to/file;./someExecutable;
但它似乎不适用于这样的命令:
./myProgram1 > /dev/null & ./myProgram2 > /dev/null & =>./myProgram1 > /dev/null &;./myProgram2 > /dev/null &;
有什么办法可以分开这些命令吗?
另外,如果我复制粘贴到命令提示符下,如果是低于2的情况下是相当的? 谢谢。
cd /path/to/file;./someExecutable; cd /path/to/file; ./someExecutable;
那么“;” 使shell等待命令完成,然后继续下一个命令。
“&”会将任何进程直接发送到后台并继续执行下一个命令 – 无论第一个命令是完成还是仍在运行。
所以“&” 将不会像你所期望的那样工作。
但实际上我不确定你的期望。
在你的shell中试试这个:
sleep 2 && echo 1 & echo 2 & sleep 3 && echo 3
它会输出:2 1 3
现在比较一下
sleep 2 ; echo 1 & echo 2 & sleep 3 ; echo 3
这将输出1 2 3
问候。
command1 & command2将执行command1 ,将进程发送到后台,并立即开始执行command2 ,即使command1还没有完成。
command1 ; command2 command1 ; command2执行command1 ,然后在command1完成后执行command2 ,无论command1是否成功退出。
command1 && command2只会在command1成功执行完成后执行command2 。 如果command1失败, command2将不会执行。
(…也是为了完整…)
command1 || command2 如果command1失败, command1 || command2将仅执行command2 (以非零退出代码退出)。