Tutorial Shell Scripting

De la Wiki.lug.ro
Salt la: navigare, căutare

Cum scriem scripturi shell

Urmatorii pasi sunt necesari pentru scrierea scripturilor shell:

  • folositi editorul dumneavoastra preferat (eu folosesc mcedit); primul rand din fisier trebuie sa fie urmatorul:
#!/bin/bash
  • dupa scrierea scriptului, setati permisiunile fisierului dupa cum urmeaza:
chmod permisiuni script

Exemplu:

# chmod +x scriptul-meu
# chmod 755 scriptul-meu
  • executarea scriptului dupa cum urmeaza:
Sintaxa
 
bash scriptul-meu
sh scriptul-meu
./scriptul-meu

Exemple

# bash scriptul-meu
# sh scriptul-meu
# ./scriptul-meu

Acum suntem pregatiti sa scriem primul script shell care va afisa "Acesta este primul meu script". Vom crea fisierul scriptul-meu.sh in care vom pune liniile de mai jos. Crearea fisierului si scrierea lui se va face folosind comenzile:

# touch scriptul-meu.sh
# mcedit scriptul-meu.sh
#!/bin/bash

clear
echo "Acesta este primul meu script"

Dupa salvarea fisierului putem rula scriptul cu urmatoarea comanda:

# ./scriptul-meu.sh

Vom observa ca scriptul nu a fost rulat deoarece nu am setat atributul de executie scriptului. Pentru a face acest lucru vom rula comanda:

# chmod +x scriptul-meu.sh

Acest script va sterge ecranul si va afisa apoi pe acesta "Acesta este primul meu script" Pentru scripturi scrise in shell scripting este recomandat sa se foloseasca extensia .sh penntru a fi mai usor recunoscute.

Exercitiu. Scrieti si executati urmatorul script:

#!/bin/bash
clear
echo "Buna $USER"
echo "Astazi este"; date
echo "Numarul userilor logati este"; who | wc -l
echo "Calendarul este"
cal

Variabilele in Shell

In shell scripting exista doua tipuri de variabile:

  • Variabilele sistemului, acestea sunt create si mentinute de catre linux, si sunt scrise cu majuscule;
  • Variabilele definite de catre utilizator, acestea sunt scrise cu minuscule.

Pentru a vizualiza o lista cu toate variabilele sistemului si valorile atribuite acestora, se poate da comanda shell:

# set

Pentru a vizualiza doar valorile unor anumite variabile se pot da comenzile:

# echo $USER
# echo $HOME

Cum sa utilizam variabilele definite de utilizator

Sintaxa

numele_variabilei=valoare

Urmatoarea atribuire este corecta:

# numar=10

Urmatoarea nu este corecta, deoarece numele variabilei trebuie sa se afle in stanga semnului egal iar valoare atribuita acesteia in dreapta.

# 10=numar

Salvati si executati urmatorul script

#!/bin/bash
clear
numar=10
echo $numar

Reguli in definirea variabilelor (atat cele ale sistemului cat si cele definite de utilizator)

  • Variabilele trebuie sa inceapa cu un caracter alfanumeric sau cu un "underscore" (_) urmat de cel putin un caracter alfanumeric.
Exemple

HOME
SYSTEM_VERSION
vehicul
numar
  • Nu folosite spatii in nici una din partile semnului egal.

Urmatoarea atribuire este corecta:

numar=10

Urmatoarele atribuiri sunt insa incorecte:

numar =10
numar= 10
numar = 10
  • Variabilele sunt case-sensitive, la fel ca si numele fisierelor in linux. Urmatoarele variabile nu sunt identice, ci diferite:
no=10
No=11
NO=20
nO=2
  • Pot de asemenea fi definite variabile nule, dupa cum se vede in exemplul urmator:
vehicul=
vehicul=""