Executar múltiples comandes concurrentment

  1. Es tracta d’executar tres comandes alhora. Cada comanda a executar consistirà en esperar un nombre de segons indicat abans d’escriure pel canal estàndard de sortida «Comanda id acabada», i id és un identificador donat a la comanda. (Les ordres sleep i echo us serviran per fer la comanda).

    1. Escriure en una línia de bash que executi alhora tres comandes. La primera, s’espera 2 segons abans d’escriure «Comanda 1 acabada». La segona, s’espera 5 segons abans d’escriure «Comanda 2 acabada». La tercera, s’espera 1 segon abans d’escriure «Comanda 1 acabada».

    2. Definiu la funció de nom f tal que faci la comanda anterior. La funció tindrà dos paràmetres: L’identificador de comanda i el nombre de segons que s’espera. Per exemple, f 1 2 funcionarà com la primera comanda de l’apartat a). Un cop definida la funció feu la mateixa línia de l’apartat a) usant només la funció definida.

Solució

  1. (sleep 2; echo "Comanda 1 acabada") & (sleep 5; echo "Comanda 2 acabada") & (sleep 1; echo "Comanda 3 acabada") ; wait
    
  2. f () {
    sleep $2; echo "Comanda $1 acabada"
    }
    f 1 2 & f 2 5 & f 3 1 ; wait