Laboratori de Shell Scripting (I)

Unitat 7 · Sistemes Operatius (SO)

Jordi Mateo Fornés

R1: Variables

  • Crea un script anomenat variables.sh.
  • Declara dues variables: una anomenada NOM amb el teu nom i una altra anomenada EDAT amb la teva edat.
  • Fes que l’script imprimeixi el missatge: Hola, el meu nom és [NOM] i tinc [EDAT] anys.
  1. Defineix les variables NOM i EDAT dins de l’script.
  2. Defineix les variables NOM i EDAT com a variables d’entorn abans d’executar l’script.

R2: Les variables sempre són cadenes

  • Crea un script anomenat suma.sh.
  • Declara dues variables anomenades NUM1 i NUM2 amb valors numèrics.
  • Fes que l’script sumi els valors de NUM1 i NUM2 i imprimeixi el resultat.

R3: Aritmètica

  • Modifica l’script suma.sh per realitzar la suma correcta dels valors numèrics de NUM1 i NUM2.
  • let RESULTAT=NUM1+NUM2
  • RESULTAT=$((NUM1 + NUM2))
  • RESULTAT=$(expr $NUM1 + $NUM2)
  • Fes servir $(( )), que és l’opció moderna.

R4: Calculadora bàsica

  • Crea un script anomenat calculadora.sh.
  • Llegeix dos números i una operació (suma, resta, multiplicació, divisió) com a arguments de línia de comandes.
  • Realitza l’operació i mostra el resultat.

R5: Arrays bàsics

  • Crea un script arrays.sh.
  • Declara un array amb 4 fruites del diable
  • Declara un altre array amb 4 usuaris d’aquestes fruites.
  • Llista quin personatge té quina fruita.
Fruita del diable Usuari
Hito-Hito no Mi Luffy
Mera-Mera no Mi Ace/Sabo
Gura-Gura no Mi Barbablanca/Barbanegra
Magu-Magu no Mi Akainu

Els array en bash són indexats començant des de 0.

R6: Diccionaris bàsics

  • Crea un script anomenat diccionaris.sh.
Clau (Regne) Valor (Rei/Reina)
Dressrosa Doflamingo
WholeCake Big Mom
Wano Kaido
Alabasta Cobra
  • Inicialitza un diccionari amb el contingut de la taula.
  • Fes un bucle per imprimir cada regne amb el seu rei/reina corresponent.

R7: Joc de les relacions

  • Mostra els personatges disponibles.
  • Demana a l’usuari un personatge.
  • L’usuari intenta endevinar la seva fruita del diable entre les opcions mostrades.
  • L’script diu si ha encertat.

CH01

Analitzeu el codi següent i digueu quin és el resultat de l’execució d’aquest script. Raoneu la resposta. Indicant per que el resultat és diferent del que s’espera.

cat > ch01.data << 'EOT'
102
071
210
153
EOT

clear
cat ch01.data
declare -i SUM=0

while read X; do
    SUM+=$X
done < ch01.data

echo "Suma: $SUM != 536"
rm -f ch01.data

Aquest exemple s’ha adaptat del Llibre Bash It Out de Sylvain Leroux. Podeu trobar més informació amb FOSS Linux Blog.