我有这样的命令
time parallel -j 40 :::: filetoprocess.sh
time parallel -j 40 :::: filetoprocess2.sh
我想一个接一个地运行这些命令,即在time parallel -j 40 :::: filetoprocess.sh
完成后,time parallel -j 40 :::: filetoprocess2.sh
但这里两个命令并行运行,
我已在 shell 脚本文件中写入这些命令,abc.sh
然后我将其运行为nohup sh abc.sh &
这就是我正在做的事情
sh creatingcommds.sh 74.9997891 76.1575846 31.6355471 30.6397432 /cats/rallisdata/cropdatazone1/new43REQ 43REQ_20170513 sleep 2 && time parallel -j 40 :::: filetoprocess2.sh && sleep 2 && sh creatingcommds.sh 74.9997891 76.1575846 31.6355471 30.6397432 /cats/rallisdata/cropdatazone1/new43REQ 43REQ_20170523 sleep 2 && time parallel -j 40 :::: filetoprocess3.sh
creatingcommds.sh
文件创建了 80 个,供使用,time parallel -j 40 :::: filetoprocess2.sh
但在这里我收到文件未找到错误。
答案1
您需要的是&&
乔治在评论中提到的方法。
&& 表示仅当前一个命令返回退出值 0 时,才会运行下一个列出的命令。||
如果您只想在第一个命令失败或返回非 0 的值时运行下一个命令,也可以使用。
因此,对于你的情况来说,情况是这样的:
time parallel -j 40 :::: filetoprocess.sh && time parallel -j 40 :::: filetoprocess2.sh
这意味着一旦第一个命令成功完成它就会运行,如果第一个命令失败它将不会运行。
尝试一下
echo test 1 `sleep 2` && echo test 2 `sleep 2` && echo test 3 `sleep 2`