С [11940]bash[11941], у вас будет такая гарантия, если вы не запустили другое фоновое задание (и остерегайтесь, что фоновые задания можно запускать с помощью [11942] и [11943], а также с помощью [11944]coproc[11945] и с помощью подстановки процессов) между [11946]foo и [11947] и [11948]wait[11949]. [12236]POSIX требует, чтобы оболочка запоминала статус выхода как минимум 25 заданий после их отсутствия[11951], но [11952]bash[11953] запоминает намного больше. [12237] Теперь, если вы это сделаете: [12238] у вас нет гарантии, что [11954]bar[11955] не будет иметь тот же pid, что и [11956]foo[11957] (если [11958]foo[11959] закончился ко времени начала [11960]bar[11961]), так что даже если это маловероятно, [11962] подождите "$pid"[11963] может дать вам статус выхода из [11964]bar[11965]. [12239] Вы можете воспроизвести его с:[12240], что (в конечном итоге) даст вам [11966]0[11967] вместо [11968]12[11969].[12241] Чтобы избежать проблемы, одним из способов будет записать его как:[12242]
27.01.2020, 19:55
Ссылка