Bash
En aquest laboratori repassarem els conceptes bàsics de Bash, el llenguatge de programació de scripts més utilitzat en sistemes GNU/Linux. Aquest laboratori està enfocat en repassar els conceptes bàsics que vau estudiar en l'assignatura de Sistemes Operatius.
Contextualització
En aquest laboratori crearem una aplicació per gestionar una llista de pokemons. Aquesta aplicació haurà de permetre afegir, llistar, eliminar i buscar pokemons. A més a més, haureu de fer servir un fitxer per emmagatzemar la informació dels pokemons.
Preparació
- Entorn de treball: Màquina virtual amb una distribució GNU/Linux instal·lada pot ser Debian o AlmaLinux.
Objectius
- Repassar els conceptes bàsics de Bash.
Tasques
-
Creeu un esquelet pel vostre script Bash.
#!/bin/bash # Constants # Functions # Main return 0
-
Implementeu una constant
POKEDEX_FILE
amb el nom del fitxer on emmagatzemareu la informació dels pokemons.POKEDEX_FILE="pokedex.txt"
-
Implementeu un menu amb la sintaxi
case
que permeti executar les següents comandes:help
,list
,search
,delete
inew
.case $1 in help) pokedex_help ;; list) pokedex_list ;; search) pokedex_search $2 ;; delete) pokedex_delete $2 ;; new) pokedex_new $2 $3 $4 $5 $6 $7 ;; *) echo "Comanda no trobada." pokedex_help ;; esac
-
Implementeu la funció
pokedex_help
que mostri per pantalla les instruccions d'ús del script.function pokedex_help() { echo "Ús: ./pokedex.sh <comanda> <arguments>" echo "Comandes:" echo " list: Llistar pokemons" echo " search <name>: Buscar pokemon" echo " delete <name>: Eliminar pokemon" echo " new <name> <type> <hp> <attack> <defense> <speed>: Afegir pokemon" }
-
Implementeu la funció
pokedex_list
que llegeixi el fitxerPOKEDEX_FILE
i mostri per pantalla la llista de pokemons.- Podeu fer servir la comanda
cat
per llegir el fitxerPOKEDEX_FILE
.
function pokedex_list() { cat $POKEDEX_FILE }
- Assegureu-vos que existeix el fitxer
POKEDEX_FILE
.
if [[ ! -f $POKEDEX_FILE ]]; then echo "El fitxer $POKEDEX_FILE no existeix." return 1 fi
- Podeu fer servir la comanda
-
Implementeu la funció
pokedex_search <name>
que llegeixi el fitxerPOKEDEX_FILE
i mostri per pantalla la informació del pokemon amb nom<name>
.- Podeu fer servir la comanda
grep
per buscar el pokemon amb nom<name>
.
function pokedex_search() { grep $1 $POKEDEX_FILE }
- Assegureu-vos que la funció
pokedex_search
rep un argument.
if [[ -z $1 ]]; then echo "Has d'indicar el nom del pokemon." echo "Ús: ./pokedex.sh search <name>" return 1 fi
- Podeu fer servir la comanda
-
Implementeu la funció
pokedex_delete <name>
que elimini el pokemon amb nom<name>
del fitxerPOKEDEX_FILE
.- Podeu fer servir la comanda
sed
per eliminar el pokemon amb nom<name>
.
function pokedex_delete() { sed -i "/$1/d" $POKEDEX_FILE }
- Assegureu-vos que la funció
pokedex_delete
rep un argument.
if [[ -z $1 ]]; then echo "Has d'indicar el nom del pokemon." echo "Ús: ./pokedex.sh delete <name>" return 1 fi
- Podeu fer servir la comanda
-
Implementeu la funció
pokedex_new <name> <type> <hp> <attack> <defense> <speed>
que permet afegir un nou pokemon a la pokedex.- Podeu fer servir la comanda
echo
per afegir el nou pokemon al fitxerPOKEDEX_FILE
.
function pokedex_new() { echo "$1 $2 $3 $4 $5 $6" >> $POKEDEX_FILE }
- Assegureu-vos que la funció
pokedex_new
rep tots els arguments necessaris.
if [[ -z $1 || -z $2 || -z $3 || -z $4 || -z $5 || -z $6 ]]; then echo "Has d'indicar el nom, tipus, hp, attack, defense i speed del pokemon." echo "Ús: ./pokedex.sh new <name> <type> <hp> <attack> <defense> <speed>" return 1 fi
- Podeu fer servir la comanda