Является ли «wait &» («wait ampersand») полезной (bash) оболочкой /оболочкой сценарий идиомы или техники?

Я «унаследовал» некоторые сценарии оболочки для машин Linux, работающих с оболочкой GNU «bash». В одном конкретном случае машина запускает версию GNU bash версии 2.0.5b

Один из этих сценариев имеет команду wait & ("wait ampersand") как часть строки «для строки» for. На первый взгляд это кажется любопытной /интересной идиомой, но мои поисковые запросы в Интернете не вернули ничего важного. man wait отображает man-страницу "BASH_BUILTINS" ("BASH BUILTINS COMMAND"), которая имеет следующее описание:

 wait [n]  
  Wait for the specified process and return its termination status.
  n may be a process ID or a job spec­ification;  if  a  job spec is given,
  all processes in that job's pipeline are waited for.  If n is not
  given, all currently active child processes are waited for, and the 
  return status is zero. If n speci­fies a non-existent process or job, 
  the return status is 127.  Otherwise, the return status is the exit 
  status of the last process or job waited for.

Прочитав эту часть этой man-страницы, мне кажется, что wait & молча (в фоновом режиме), убедившись, что « все текущие активные дочерние процессы ждут, а статус возврата равен нулю . ". Правильно ли я в этой интерпретации? Является ли это общей и /или полезной идиомой?

Для дополнительного контекста я говорю о следующем типе использования в скрипте:

for file in `ls *.txt ; wait &`
do
   ...
   [cp instructions]
   ...
   [mv instructions]
   ...
   [mailx instruction]
done
10 голосов | спросил ricmarques 15 +03002015-10-15T18:38:10+03:00312015bEurope/MoscowThu, 15 Oct 2015 18:38:10 +0300 2015, 18:38:10

1 ответ


13

Я не могу представить никаких причин для написания этого кода, и я не совсем уверен, чего добивался человек, который написал этот код. wait здесь ничего не делает - с его точки зрения, нет дочерних процессов, поэтому он сразу же выйдет и в основном действует как noop (wait сам выполняется в дочернем процессе из-за подстановки команды, но это не связано).

В стороне, синтаксический анализ вывода ls довольно хрупкий . Вместо этого рассмотрим только следующее:

for file in *.txt; do
    ...
done
ответил Chris Down 15 +03002015-10-15T18:42:20+03:00312015bEurope/MoscowThu, 15 Oct 2015 18:42:20 +0300 2015, 18:42:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132