Sunteți pe pagina 1din 11

Un script se editeaza intr-un editor text oarecare si se salveaza.

OBS
1. prima linie dintr-un script indica tipul de shell pe care il utilizam: vom lucra cu Bourne Shell deci prima linie
va fi de forma #!/bin/sh
2. dupa salvarea fisierului se acorda acestuia drepturi de executie utlizandu-se comanda $chmod +x fis_exe
3. executia se realizeaza astfel : din linia de comanda se tasteaza ./fis_exe –simbolul ./ semnifica faptul ca
fisierul executabil se afla in directorul curent.

Exemple shell script-uri

Pb1 Sa se verifice daca un numar, dat in linia de comanda este pozitiv sau negativ
$ vi a.sh
#!/bin/bash
#
#
if [ $# -eq 0 ]
then
echo "$0 : Trebuie sa dati un numar argument"
exit 1
fi
if test $1 -gt 0
then
echo "$1 numarul este pozitiv"
else
echo "$1 numarul este negativ"
fi

Pb 2 Sa se scrie tabla inmultirii pentru un numar dat ca argument


$ vi b.sh
#!/bin/bash
if [ $# -eq 0 ]
then
   echo "Eroare – Dati un argument"
   echo "Sintaxa este: $0 number"
exit 1
fi
n=$1
i=1
while [ $i -le 10 ]
do
  echo "$n * $i = `expr $i \* $n`"
  i=`expr $i + 1`
done

Pb 3 Sa listeze continutul directorului current. Sa se stearga din directorul current fisierele care incep
cu literele j si x.
$ vi c.sh
#!/bin/bash
for file in *
do
ls -l "$file" # Listeaza toate fisierele din calea curenta
done

for file in [jx]*


do
rm -f $file
# Sterge numai fisierele a caror denumire incepe cu "j" or "x" din $PWD.
echo "Fisierul sters: \"$file\""
done
echo
exit 0
Pb 4 Sa se afiseze un mesaj pentru cazul in care se scrie una din literele A,B,C
$ vi d1.sh
#!/bin/bash
echo 'Introdu A, B, sau C: \c'
read letter
case $letter in
A) echo 'Ati introdus A' ;;
B) echo 'Ati introdus B' ;;
C) echo 'Ati introdus C' ;;
*) echo 'Nu ati introdus A, B, sau C' ;;
esac
Pb 5 Sa se afiseze tabelul:
11111
22222
33333
44444
55555

$ vi e.sh
#!/bin/bash

for (( i = 1; i <= 5; i++ ))      ### Loop 1###


do

    for (( j = 1 ; j <= 5; j++ )) ### Loop 2###


    do
          echo -n "$i "
    done

  echo "" #### trec la linie noua ###

done
Pb 6 Verificarea prin preluarea ca argument a unui nume de fisier daca acesta este sau nu director
$ vi f.sh
 #!/bin/bash
var1 = student.dat
if [ -f $var1 ]
then
echo "$var1 este un fisier obisnuit!"
elif [ -d $var1 ]
then
echo "$var1 este director"
fi
Testati urmatoarele scripturi si precizati efectul executiei lor:
# copierea fisierelor intr-un director nou aduna primele 5 numere pare)
$ vi f.sh $ vi g.sh
#!/bin/bash #!/bin/bash
mkdir copie contor=0
for numefisier in `ls` rez=0
do while [ $contor -lt 5 ]
cp $numefisier copie/$numefisier do
if [ $? -ne 0 ] contor=`expr $contor + 1`
then increment=`expr $contor \* 2`
echo "operatie esuata" rez=`expr $rez + $increment` done
fi echo "rez=$rez"
done
# Genereaza copia unui fisier inainte de editare
$ vi h.sh
#!/bin/bash
if cp "$1" "#$1" then
vi "$1"
else
echo "Nu am putut creea copia de siguranta"
fi

Pb 7
$ vi h.sh
#!/bin/bash
contor=$#
cmd=echo
while true
do
cmd="$cmd \$$contor"
contor=`expr $contor - 1`
if test $contor -eq 0
then break
fi
done
eval $cmd

Comanda eval este folosită în programe shell care construiesc linii de comandă din mai multe variabile. Comanda e
utilă dacă variabilele conţin caractere care trebuie sa fie recunoscute de shell nu ca rezultat al unei substituţii.
Astfel de caractere sunt: ;, |, &, < , >, ".
Pb 8
$ vi k.sh
#!/bin/bash
contor=$#
cmd=echo
while true
do
cmd="$cmd \$$contor"
contor=`expr $contor - 1`
if test $contor -gt 0
then continue
fi
eval $cmd
exit
done

Diferenta dintre executarea problemei 7 si 8


Pb 9
$ vi pb9.sh
#!/bin/bash
if test $# -eq 0
then ls -l | grep '^d'
else for i
do
for j in $i/*
do
if test -d $j
then echo $j
fi
done
done
fi

Modificati programul din exemplul 9 pentru a-i extinde efectul asupra tuturor directoarelor din
subarborele directorului argument (sau al celui curent, in lipsa argumentelor).

Pb 10 Compararea a doua siruri introduce de la tastatura

$ vi pb10.sh
#!/bin/bash
echo -n "Introduceti string1: " # -n nu trece la linie noua
read string1
echo -n "Introduceti string2: "
read string2
if [ $string1 = $string2 ]
then
echo "string1 egal cu string2"
else
echo "string1 diferit de string2"
fi
Pb 11 Compararea a doua numere introduse de la tastatura

$ vi pb11.sh
#!/bin/bash
echo -n "Introduceti nr1: "
read nr1
echo -n "Introduceti nr2: "
read nr2
if [ $nr1 -eq $nr2 ]
then
echo "nr1 egal cu nr2"
else
echo "nr1 diferit de nr2"
fi
Pb 12 Convertirea unui numar din baza 10 in baza 16

$ vi pb12.sh
#!/bin/bash
n=0
hex=0
echo -n "Introdu numarul in baza 10 n: "
read n
hex=`echo "obase=16;ibase=10; $n" | bc`
echo "$n in baza 10 este echivalent cu \"$hex\" in baza 16"

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