У меня есть такие команды, как
time parallel -j 40 :::: filetoprocess.sh
time parallel -j 40 :::: filetoprocess2.sh
Я хочу запускать эти команды один после другого, т. е. когда time parallel -j 40 :::: filetoprocess.sh finsih then time parallel -j 40 :::: filetoprocess2.sh, но здесь оба запускаются параллельно, я пишу эти команды внутри сценария оболочки файл abc.sh, а затем я запускаю его как nohup sh abc.sh &
, вот что делает m 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, но здесь я получаю файл не найденной ошибкой.
Что вам нужно, это &&, как уже упоминал Джордж в комментарии.
& amp; & amp; & amp; означает, что следующая перечисленная команда будет запущена только в том случае, если предыдущая команда вернула значение выхода 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`
Что вам нужно, это &&, как уже упоминал Джордж в комментарии.
& amp; & amp; & amp; означает, что следующая перечисленная команда будет запущена только в том случае, если предыдущая команда вернула значение выхода 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`