Sunteți pe pagina 1din 1

Sisteme de Operare

Laborator nr. 5
Laborator nr. 5
Scripturi shell

Exemple de scripturi:
1. Utilizarea operatorului de expandare {a..z}:
#!/bin/bash
for i in {1..10}
do
echo -n "$i "
done

#!/bin/bash
for i in $(seq 10)
do
echo -n "$i "
done

echo {a..z} afiseaza

literele de la a la z
Acest operator nu poate fi folosit ca in exemplul de mai jos:
x=1
y=5
echo {$x..$y}

2. Exemplu de script care se autoapeleaza recursiv. Scriptul trebuie sa aiba drepturi de


executie chiar daca este apelat prin comanda de tipul: bash script.sh. De ce?
#!/bin/bash
# recurse.sh
RANGE=10
MAXVAL=9
i=$RANDOM
let "i %= $RANGE" # Generate a random number between 0 and $RANGE - 1.
if [ "$i" -lt "$MAXVAL" ]
then
echo "i = $i"
./$0 # Script recursively spawns a new instance of itself.
fi
# Each child script does the same, until
#+ a generated $i equals $MAXVAL.
# Using a "while" loop instead of an "if/then" test causes problems.
exit 0

Probleme propuse pentru rezolvare:


1. Scrieti un script care pentru un parametru primit in linia de comanda ( prj_name) sa
genereze urmatoarea structura de directoare pentru o aplicatie C sau C++:
~/<prj_name>|-bin/
|-obj/
|-src/-<fisiere>.<c/cpp>
|-inc/-<fisiere>.h
|-<prj-name>.<c/cpp>
|-<prj-name>.h
|-build.sh

Scriptul va afisa un meniu din care utilizatorul alege ce tip de fisiere trebuie generate C
sau C++, si va cere utilizatorului numarul fisierelor sursa si header.
2. Extindeti scriptul anterior cu o noua optiune in meniu pentru generarea unui fisier
build.sh (cu drepturi de executie) pe care utilizatorul il poate folosi la compilarea
proiectului. In fisierul build.sh trebuie scrise instructiunile de compilare pentru fisierele
generate. Executabilul rezultat in urma compilarii (prj_name) trebuie pus in subdirectorul
bin/, iar fisierele obiect generate pentru fisierele .c sau .cpp trebuie puse in
subdirectorul obj/ al proiectului.

S-ar putea să vă placă și