“Wait &” (“wait ampersand”) yararlı (bash) kabuk / kabuk komut dosyası deyimi veya tekniği midir?


12

GNU "bash" kabuğunu çalıştıran Linux makineleri için bazı kabuk komut dosyalarını "devralmış". Belirli bir durumda, makine GNU bash 2.0.5b sürümünü çalıştırır

Bu komut dosyalarından birinde wait &, bir fordöngünün "satır" için bir parçası olarak ("ve işareti bekle") komutu bulunur . İlk bakışta, bu meraklı / ilginç bir deyim gibi görünüyor, ancak web aramalarım alakalı bir şey döndürmedi. man waitaşağıdaki açıklamaya sahip "BASH_BUILTINS" ("BASH BUILTINS COMMAND") el kitabını gösterir:

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.

Bu kılavuzun o kısmını okuyarak bana öyle geliyor ki wait &(arka planda) " şu anda aktif olan tüm alt süreçlerin beklendiğinden ve dönüş durumunun sıfır olduğundan" emin olun . Bu yorumda haklı mıyım? Bu yaygın ve / veya yararlı bir deyim mi?

Ek bağlam için, komut dosyasında aşağıdaki tür kullanımlardan bahsediyorum:

for file in `ls *.txt ; wait &`
do
   ...
   [cp instructions]
   ...
   [mv instructions]
   ...
   [mailx instruction]
done

Yanıtlar:


14

Bu kodu yazmak için herhangi bir neden düşünemiyorum ve bu kodu yazan kişinin ne elde etmeye çalıştığından emin değilim. waitBurada hiçbir şey yapmaz - kendi bakış açısıyla, orada olan sadece hemen çıkmak ve temelde bir NOOP (olarak hareket edecek, böylece hiçbir çocuğun süreçleri waitkendisi yüzünden komut ikamesine bir çocuk işleminde çalıştırır, ama bu hiçbir ilişkisi yoktur).

Bir yana, ls çıktısını ayrıştırma oldukça kırılgandır . Bunun yerine, sadece bunu yapmayı düşünün:

for file in *.txt; do
    ...
done
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.