El valor de l'estat de sortida de l'ordre d'espera depèn de l'ordre indicada per l'últim operand especificat. Quan qualsevol procés finalitza de manera anormal, l'estat de sortida serà superior a 128 i serà diferent dels valors d'estat de sortida d'altres ordres. espera l'ordre surt amb el valor 0 quan truca sense operands i tots els identificadors de procés coneguts pel shell actual han finalitzat. Si l’ordre wait detecta algun error, torna qualsevol valor de l’1 al 126. Si es desconeix l’últim identificador del procés, l’ordre wait surt amb el valor 127. En aquest tutorial es mostra com podeu utilitzar l’ordre wait a Linux.
Exemple 1: utilitzar l'ordre d'espera per a diversos processos
Després d’executar el següent script, s’executaran dos processos en segon pla i l’identificador de procés de la primera ordre echo s’emmagatzema a la variable $ process_id. Quan s'executa l'ordre wait amb $ process_id, l'ordre següent esperarà a completar la tasca de la primera ordre eco. La segona ordre d'espera s'utilitza amb ' $! 'I això indica l'identificador del procés de l'últim procés en execució. ' $? ’S’utilitza per llegir el valor d’estat de l’ordre wait.
#! / bin / bash
trobo 'prova d'ordres d'espera1' &
id_procés=$!
trobo 'prova d'ordres d'espera2' &
espera $ process_id
troboFeina1ha sortit amb estat$?
espera $!
troboFeina2ha sortit amb estat$?
Sortida:
$bashwait1.sh
Exemple-2: proveu l'ordre d'espera després d'utilitzar l'ordre kill
Al següent script, l'ordre wait s'executa després de finalitzar el procés. l'ordre sleep s'executa com a procés en segon pla i l'ordre kill s'executa per finalitzar el procés en execució. Després d'aquesta ordre d'espera s'executa amb l'identificador de procés del procés finalitzat. La sortida mostrarà l'identificador del procés finalitzat.
#! / bin / bashtrobo 'Prova de l'ordre d'espera'
dormir 20 &
pid=$!
matar $ pid
espera $ pid
trobo $ pidva ser donat de baixa.
Sortida:
$bashwait2.sh
Exemple-3: comproveu el valor de l'estat de sortida
Al següent script, la funció check () es diu per dos valors d'argument. A l'inici del tutorial, es discuteix que si l'ordre wait s'executa correctament, el valor de sortida serà 0 i si l'ordre wait detecta algun error, retornarà qualsevol valor entre 1 i 126. Després d'executar l'script, si passa 0 com a segon argument L'ordre value then wait s'acaba correctament i, si passa algun valor superior a zero, s'acaba sense èxit.
#! / bin / bashfunciócomprovar()
{
trobo 'Dormiu 1 $ segons'
dormir $ 1
sortir $ 2
}
comprovar$ 1 $ 2 &
b=$!
trobo 'Comprovació de l'estat'
espera $ b && troboD'acord|| troboNO ESTÀ BÉ
Sortida:
$bashwait3.sh3 0$bashwait3.sh3 5
Espero que aquest tutorial us ajudi a aprendre correctament l’ordre d’utilitzar. Hi ha una altra ordre a Linux, anomenada dormir esperar la quantitat determinada de vegades, però hi ha algunes diferències entre aquestes ordres. Si esteu interessats en conèixer-los ordre de son després podeu visitar aquest enllaç.