Stații de lucru online OnWorks Linux și Windows

logo

Găzduire online gratuită pentru stații de lucru

<Înapoi | Cuprins | Următor>

Variabile și constante

Există totuși o problemă cu scenariul nostru. Observați cum se repetă șirul „System Information Report”? Cu scriptul nostru minuscul nu este o problemă, dar să ne imaginăm că scriptul nostru a fost foarte lung și am avut mai multe instanțe ale acestui șir. Dacă am vrea să schimbăm titlul cu altceva, ar trebui să-l schimbăm în mai multe locuri, ceea ce ar putea fi multă muncă. Ce se întâmplă dacă am putea aranja scenariul astfel încât șirul să apară o singură dată și nu de mai multe ori? Acest lucru ar face întreținerea viitoare a scriptului mult mai ușoară. Iată cum am putea face asta:



#! / Bin / bash


# Program pentru a scoate o pagină de informații despre sistem


title="Raport de informații despre sistem"


ecou"

$titlu

$titlu

"

#! / Bin / bash


# Program pentru a scoate o pagină de informații despre sistem


title="Raport de informații despre sistem"


ecou"

$titlu

$titlu

"


Prin crearea unui variabil numit titlu și atribuindu-i valoarea „System Information Report”, putem profita de extinderea parametrilor și plasăm șirul în mai multe locații.

Deci, cum creăm o variabilă? Simplu, doar îl folosim. Când shell-ul întâlnește o variabilă, o creează automat. Acest lucru diferă de multe limbaje de programare în care variabilele trebuie să fie explicit declarat sau definite înainte de utilizare. Carcasa este foarte laxă în acest sens, ceea ce poate duce la unele probleme. De exemplu, luați în considerare acest scenariu jucat pe linia de comandă:


[eu@linuxbox ~]$ foo="da" [eu@linuxbox ~]$ echo $foo da

[eu@linuxbox ~]$ eco $prost


[eu@linuxbox ~]$

[eu@linuxbox ~]$ foo="da" [eu@linuxbox ~]$ echo $foo da

[eu@linuxbox ~]$ eco $prost


[eu@linuxbox ~]$


Mai întâi atribuim variabilei valoarea „da”. foo, apoi afișați valoarea acesteia cu ecou. Apoi afișăm valoarea numelui variabilei scris greșit ca „prost” și obținem un rezultat gol. Acest lucru se datorează faptului că shell-ul a creat cu bucurie variabila păcăli când l-a întâlnit și i-a dat valoarea implicită de nimic sau gol. Din aceasta, aflăm că trebuie să acordăm o mare atenție ortografiei noastre! De asemenea, este important să înțelegeți ce sa întâmplat cu adevărat în acest exemplu. Din privirea noastră anterioară asupra modului în care shell-ul efectuează expansiuni, știm că comanda:



[eu@linuxbox ~]$ echo $foo

[eu@linuxbox ~]$ echo $foo


suferă extinderea parametrilor și are ca rezultat:



[eu@linuxbox ~]$ echo da

[eu@linuxbox ~]$ echo da


întrucât comanda:



[eu@linuxbox ~]$ echo $prost

[eu@linuxbox ~]$ echo $prost


se extinde in:



[eu@linuxbox ~]$ echo

[eu@linuxbox ~]$ echo


Variabila goală se extinde în nimic! Acest lucru poate face ravagii cu comenzile care necesită argumente. Iată un exemplu:



[eu@linuxbox ~]$ foo=foo.txt [eu@linuxbox ~]$ foo1=foo1.txt [eu@linuxbox ~]$ cp $foo $prost

cp: lipsește operandul fișierului destinație după „foo.txt”

[eu@linuxbox ~]$ foo=foo.txt [eu@linuxbox ~]$ foo1=foo1.txt [eu@linuxbox ~]$ cp $foo $prost

cp: lipsește operandul fișierului destinație după „foo.txt”


Încercați `cp --help' pentru mai multe informații.

Încercați `cp --help' pentru mai multe informații.


Atribuim valori la două variabile, foo și foo1. Apoi executăm a cp, dar scrieți greșit numele celui de-al doilea argument. După extindere, cp comanda este trimisă doar un argument, deși necesită două.

Există câteva reguli despre numele variabilelor:

1. Numele variabilelor pot consta din caractere alfanumerice (litere și cifre) și caractere de subliniere.

2. Primul caracter al unui nume de variabilă trebuie să fie fie o literă, fie o liniuță de subliniere.

3. Spațiile și simbolurile de punctuație nu sunt permise.

Cuvântul „variabilă” implică o valoare care se modifică și, în multe aplicații, variabilele sunt folosite în acest fel. Cu toate acestea, variabila din aplicația noastră, titlu, este folosit ca a constant. O constantă este la fel ca o variabilă prin faptul că are un nume și conține o valoare. Diferența este că valoarea unei constante nu se modifică. Într-o aplicație care efectuează calcule geometrice, am putea defini PI ca constantă și atribuiți-i valoarea lui 3.1415, în loc să folosiți numărul literal în programul nostru. Shell-ul nu face nicio distincție între variabile și constante; acestea sunt în mare parte pentru comoditatea programatorului. O convenție comună este utilizarea literelor mari pentru a desemna constante și litere mici pentru variabilele adevărate. Vom modifica scriptul nostru pentru a respecta această convenție:



#! / Bin / bash

# Program pentru a scoate o pagină de informații despre sistem TITLUL="Raport de informații despre sistem Pentru $HOSTNAME"ecou"

$TITLUL

$TITLUL

"

#! / Bin / bash

# Program pentru a scoate o pagină de informații despre sistem TITLUL="Raport de informații despre sistem Pentru $HOSTNAME"ecou"

$TITLUL

$TITLUL

"


De asemenea, am profitat de ocazie pentru a îmbunătăți titlul nostru adăugând valoarea variabilei shell

HOSTNAME. Acesta este numele de rețea al mașinii.


imagine

notițe: shell-ul oferă de fapt o modalitate de a impune imuabilitatea constantelor, prin utilizarea declara comandă încorporată cu -r opțiune (numai citire). Dacă ne-am fi repartizat TITLUL pe aici:


declara -r TITLE="Titlul paginii"


shell-ul ar împiedica orice atribuire ulterioară către TITLUL. Această caracteristică este rar folosită, dar există pentru scripturi foarte formale.


imagine


 

Top OS Cloud Computing la OnWorks: